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

Gar*_*chi 4 shell scripting bash ssh

我想启动驻留在远程计算机上的 shell 脚本。当我使用

ssh user@example.com /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)

它需要打开 ssh 连接,直到脚本终止。

但我需要脚本继续运行,即使在我关闭 ssh 连接之后,直到脚本自行完成。我只想开始一个过程,然后忘记它。

我怎样才能使用 ssh 来做到这一点?

多谢!

PS:这不是这个 stackechange 问题的重复。

Ed *_*lle 6

我认为问题在于,当 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 分钟。