我正在通过SSH (Putty)在Linux机器上工作。我需要让一个进程在夜间运行,因此我认为可以通过在后台启动该进程(在命令末尾使用&号)并将stdout重定向到一个文件来实现这一点。

令我惊讶的是,这行不通。只要我关闭Putty窗口,进程就会停止。

我怎样才能防止这种情况发生?


当前回答

还有开源libslack包的daemon命令。

Daemon是相当可配置的,并且关心所有繁琐的守护进程的东西,如自动重启、日志记录或pidfile处理。

其他回答

还有开源libslack包的daemon命令。

Daemon是相当可配置的,并且关心所有繁琐的守护进程的东西,如自动重启、日志记录或pidfile处理。

看看“nohup”程序。

nohup blah &

用您的进程名替换blah!

在基于debian的系统上(在远程机器上) 安装:

Sudo apt-get install tmux

用法:

tmux 运行您想要的命令

重命名会话:

按Ctrl+B然后$ 集名称

退出会话:

按Ctrl+B然后D

(这会留下tmux会话)。此时可以退出SSH。

当您需要再次返回/检查它时,启动SSH,并输入

Tmux附加session_name

它将带您回到tmux会话。

如果父进程被杀死,Nohup允许不杀死客户端进程,以便在注销时进行论证。更好的用法是:

nohup /bin/sh -c "echo \$\$ > $pidfile; exec $FOO_BIN $FOO_CONFIG  " > /dev/null

Nohup使您启动的进程不受终止的影响,当您退出时,SSH会话及其子进程将被终止。我给出的命令提供了一种方法,可以将应用程序的pid存储在pid文件中,以便稍后正确地终止它,并允许进程在注销后运行。