保持进程

原文:Keep Long Running UNIX Commands Alive

需求:你有一个程序要运行很长时间,你希望即使自己退出SSH连接,它也不会被杀死,而是运行到它自己结束。

我知道三种方法来保持进程:nohupdisowntmux

最简单的方法: nohup

当你退出终端时,终端会向它的所有子进程发送挂起信号,这会结束掉它们。 而nohup能通知进程忽略挂起信号。

为了保持进程

$ nohup <the command> &

默认情况下nohup会将标准输出和标准错误重定向到当前目录下的nohup.out文件。

这时,即使你退出终端,进程也不会被结束。你可以重新登入并tail nohup.out文件,你会发现它仍在运行。

不好,我忘了用nohup启动:disown

如果你忘了用nohup启动,不必担心,disown会是你的朋友。唯一的缺点是你将不能重定向标准输出。

为了保持你已启动的进程,首先你需要暂停它,然后让它在后台运行起来,最后disown即可:

# press Ctrl+Z to suspend the program
$ bg
$ disown

现在可以放心地退出终端了。

复杂方法:tmux

你可能感兴趣的:(linux,Linux)