@a335031
2018-08-31T16:01:00.000000Z
字数 492
阅读 910
Linux
运维
原文:Keep Long Running UNIX Commands Alive
需求:你有一个程序要运行很长时间,你希望即使自己退出SSH连接,它也不会被杀死,而是直到它自己结束。
我知道三种方法来保持进程:nohup
,disown
和 tmux
。
当你退出终端时,终端会向它的所有子进程发送挂起信号,这会结束掉它们。 而nohup
能通知进程忽略挂起信号。
为了保持进程
$ nohup <the command> &
默认情况下nohup
会将标准输出和标准错误重定向到当前目录下的nohup.out文件。
这时,即使你退出终端,进程也不会被结束。你可以重新登入并tail
nohup.out文件,你会发现它仍在运行。
如果你忘了用nohup
启动,不必担心,disown
会是你的朋友。唯一的缺点是你将不能重定向标准输出。
为了保持你已启动的进程,首先你需要暂停它,然后让它在后台运行起来,最后disown
即可:
# press Ctrl+Z to suspend the program
$ bg
$ disown
现在可以放心地退出终端了。
略