如何通过 ssh 在远程计算机上启动远程进程?

如何通过 ssh 在远程计算机上启动远程进程?

我想启动驻留在远程计算机上的 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 分钟。

相关内容