[关闭]
@a335031 2018-08-31T16:01:00.000000Z 字数 492 阅读 910

保持进程

Linux 运维


原文Keep Long Running UNIX Commands Alive

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

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

最简单的方法: nohup

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

为了保持进程

  1. $ nohup <the command> &

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

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

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

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

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

  1. # press Ctrl+Z to suspend the program
  2. $ bg
  3. $ disown

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

复杂方法:tmux

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注