使用ssh在后台运行程序
使用ssh在后台运行程序
方法之一:使用nohup
nohup可以使后面的命令不会响应挂断(SIGHUP)信号。
也就是说,通过远程登录执行nohup命令后,即使退出登录后,程序还是会正常执行。通常情况下,nohup命令最后会跟上&字符,表示将这个命令放至后台执行,这样才能真正做到将这个命令放至后台持续的执行。具体示例如下所示。
提示:nohup通常用于执行无干预的自动化程序或脚本,无法完成带有交互的操作。
执行如下命令,每秒输出一行信息。bash hello.sh
系统显示类似如下。
在命令头尾分别加上nohup和&,如下所示,可以看到nohup输出了一行信息,再按一下回车键就跳回了Shell命令行,此时命令已经在后台执行了,nohup将命令的输出重定向至当前目录的nohup.out文件中。同时注意到nohup会将对应程序的PID输出,PID可用于需要中断进程时结束进程。
nohup bash hello.sh &
系统显示类似如下。
通过如下命令,可以持续的查看nohup.out的输出,达到监视程序的效果。
tail -f nohup.out
在命令中也可以使用重定向将程序的输出改为自己想要的文件名,如下所示,则程序的输出就会写到hello.log文件中。
nohup bash hello.sh >hello.log &
若程序不会自动退出,那么此时需要使用kill命令来结束进程。例如,可以使用如下命令,结束进程。
kill -TRM [$PID]
说明:[$PID]为之前nohup命令输出的值。
参考文献:
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.