Linux
linux + 在其他 shell 上執行腳本,因為腳本卡住了 - 不返回 linux 提示符
在我的 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 會話,就像什麼都沒發生一樣。
希望這可以幫助