Use SSH to start a background process on a remote server, and exit session
我正在使用ssh在远程服务器上启动后台进程。这就是我现在拥有的:
ssh [email protected]"nohup process &"
这是可行的,过程确实开始了。但在我点击ctr-c之前,ssh会话本身不会结束。
当我点击ctr-c时,远程进程继续在后台运行。
我想将ssh命令放在一个可以在本地运行的脚本中,所以我希望ssh会话在远程进程启动后自动退出。
有没有办法做到这一点?
ssh的"-f"选项告诉ssh在后台运行远程命令并立即返回。例如。,
1 | ssh -f user@host"echo foo; sleep 5; echo bar" |
如果您键入上述内容,将立即返回shell提示,然后将看到"foo"输出。5秒钟后,您将看到"bar"输出。与此同时,你可能已经在使用外壳了。
使用
1 | ssh user@server 'DISPLAY=:0 nohup xeyes < /dev/null > std.out 2> std.err &' |
这样,您将完全脱离远程进程。小心使用
在上面的示例中,我使用
您可以使用
或者您可以将命令发送到已经运行的屏幕。您的本地脚本应该如下所示:
1 2 3 4 5 | ssh [email protected] screen -dmS new_screen sh screen -S new_screen -p 0 -X stuff $'nohup process ' exit |
有关更多信息,请参阅本教程