我想启动驻留在远程计算机上的 shell 脚本。当我使用
ssh [email protected] /path/to/script.sh
它需要打开 ssh 连接,直到脚本终止。
但我需要脚本继续运行,即使在我关闭 ssh 连接之后,直到脚本自行完成。我只想开始一个过程,然后忘记它。
我怎样才能使用 ssh 来做到这一点?
多谢!
PS:这不是重复的这个 stackechange 问题。
答案1
我认为问题在于,当 SSH 会话关闭(通过按 ctrl-c 或关闭 xterm)时,会向该进程发送一个 HUP。要将进程分叉到后台,请添加&
,要阻止 hup,请使用nohup
:
ssh [email protected] 'nohup sleep 300 >/dev/null 2>/dev/null </dev/null &'
ssh 应该启动,并且该进程将在 example.com 上在后台运行。
如果您希望监视其进度,您可以使用screen
,如果您希望这样做,那么类似于此的操作将会有所帮助:
ssh [email protected] -t 'screen -D -RR -S this /bin/sleep 300'
这将创建一个名为“this”(-S)的屏幕会话,如果附加到其他地方,则分离已经运行的屏幕并在此处重新附加。然后启动 /bin/sleep,等待 5 分钟。