Linux
在遠端伺服器上執行 shell 作業,關閉終端而不關閉作業
我正在使用扭矩在遠端伺服器上執行作業。我目前有一個煩人的問題。
當我執行我的工作時,這就是我目前所做的:
- 通過 Teamviewer 登錄另一台電腦
- 從那台電腦
ssh
進入遠端伺服器ssh user@remoteserver.com
- 在這裡,我執行我的作業腳本
sh verycomplicatedrunscript.sh
,它會向使用者回顯,例如:
I am now running job 1...
I am now running job 2...
I am now running job 3...
I am now running job 4...
只是為了表明它正在執行以及它正在執行什麼。
唯一的問題是這需要幾天的時間,因為工作量很大並且有數千個。
現在,我想繞過 Teamviewer 步驟,直接
ssh
從我自己的電腦進入遙控器。但是如果我這樣做,並執行我的作業腳本,然後關閉終端;它殺死了程序(因此我目前在另一台電腦上執行它,我可以通過讓終端保持打開狀態來執行幾天)。有什麼方法可以讓我在遠端伺服器上執行腳本,然後註銷而不殺死我的作業腳本的執行?
謝謝
解決方案
我最終使用了
screen
非常坦率地驚人的選項。我的工作現在正在執行
screen sh awesomejobscript.sh option1 option2 option3
只需使用 nohup:
$ ssh user@remoteserver.com "nohup complexscript.sh > mylog 2>&1 &"
除了上面的一個,事實證明還有很多解決方案;
screen sh jobscript.sh op1 op2 op3
效果也很好。