Linux

linux + 在其他 shell 上執行腳本,因為腳本卡住了 - 不返回 linux 提示符

  • January 20, 2012

在我的 Linux 機器中,我有二進制腳本(稱為 transferNames.bin )

問題是當我執行 transferNames.bin 時 & 腳本卡住並且沒有返回到 Linux 提示符“#”,即使我等待 1 天或更長時間(所以我無法繼續在我的 Linux 上工作,因為它卡住了)範例:

 [root@linux1 tmp]# ./transferNames.bin &  
                    Transferring..

也有不同的方式:

 [root@linux1 tmp]# ( /tmp/transferNames.bin ) &  
                    Transferring..

備註 - transferNames.bin 腳本工作正常,我無法編輯此腳本

我的問題請建議我是否可以

在其他 shell 上執行 ./transferNames.bin & - 怎麼做?

為了避免卡死問題?或任何其他解決方案以執行 ./transferNames.bin & 但在其他外殼上?或任何其他意見?

我認為您的腳本期望從標準輸入中得到某些東西,例如stew said,因此當您使用 & 啟動它時它會暫停,因為在後台時,標準輸入會被 shell 關閉。

如果您需要在伺服器上啟動該腳本並使用該 shell 執行其他操作,或者只是關閉您的電腦並回家,您可以嘗試使用 SCREEN 程序。它存在於大多數 Linux 發行版中,您可以像這樣使用它:

screen

(新外殼將打開)

/tmp/transferNames.bin

腳本將照常啟動。您現在可以按此組合鍵: ctrl-a + d 您將從 SCREEN 中“分離”。您現在可以註銷並回家,腳本仍將執行。當您回來並想要檢查腳本的輸出時,您登錄到伺服器並啟動以下命令:

screen -r

這將重新附加到該 SCREEN 會話,就像什麼都沒發生一樣。

希望這可以幫助

引用自:https://serverfault.com/questions/351894