Bash
如何通過 ssh 在遠端機器上啟動遠端程序?
我想啟動一個駐留在遠端機器上的 shell 腳本。當我使用
ssh user@example.com /path/to/script.sh
它需要打開 ssh 連接,直到腳本終止。
但是我需要腳本繼續執行,即使在我關閉 ssh 連接直到腳本自行完成之後也是如此。我只想開始一個過程,然後忘記它。
如何使用 ssh 執行此操作?
非常感謝!
PS:這不是這個 stackechange question的重複。
我認為問題在於當 SSH 會話關閉時(通過按 ctrl-c 或關閉 xterm),會向程序發送 HUP。要將程序分叉到後台,添加
&
並阻止 hup,請使用nohup
:
ssh user@example.com 'nohup sleep 300 >/dev/null 2>/dev/null </dev/null &'
ssh 應該啟動,並且該程序將在後台在 example.com 上執行。
如果你想監控它的進度,你可以使用
screen
,如果你想這樣做,那麼類似的東西會有所幫助:
ssh user@example.com -t 'screen -D -RR -S this /bin/sleep 300'
這將創建一個名為“this”(-S)的螢幕會話,如果附加在其他地方,則分離已經執行的螢幕並在此處重新附加。然後啟動 /bin/sleep 並等待 5 分鐘。