nohup <command> <arg> &
当我SSH到Linux服务器,如果我想运行一个命令,并确保它将继续在SSH注销后,在后台运行,我会使用上述命令。
最近我正在使用名为Bitnami Node.js堆栈的服务器堆栈 。 这是一个自包含的软件包。 安装目录中的bin文件夹中有一个node二进制文件。
在命令行中,我可以使用node命令来运行我的JS程序: node <js_program.js> 。 没有问题。
但是,我想从SSH注销后继续运行该程序。 当我运行nohup <installation_dir>/nodejs/bin/node <js_program.js> > <stdout.out> & ,程序将在后台运行。 但是,当我从SSH注销时,程序也将立即终止。 在这种情况下nohup命令似乎没有效果。
我该如何解决这个问题?
如果你已经安装了at软件包,并且你没有被拒绝(直接通过/etc/at.deny ,或者通过/etc/at.allow隐式地使用它),那么请尝试使用以下任一项:
echo "<installation_dir>/nodejs/bin/node <js_program.js> > <stdout.out>" | at now
要么:
at now
并在at>提示符处指定您的命令。
这应该安排命令通过守护进程立即运行。
这是我在传统意义上的“ nohup ”模拟nohup实现(例如,AIX 5.3和更早版本)的系统。
运行:
nohup command ... > file &
将离开stderr和stdin。 相反,运行:
nohup command ... > file 2>&1 <&- &
要么:
nohup command ... > logfile 2> errfile <&- &
这将redirect标准输出并closures标准input。
请记住,如果不能从标准input读取,您的命令可能会中止。
我设法通过改变我从SSH shellterminal注销的方式来解决这个问题。
不要点击XbuttonclosuresPuTTY窗口,而是在SSH shellterminal中inputexit以注销。 现在该进程能够在注销后继续在后台运行。
如果我点击Xbuttonclosures窗口,后台进程将立即终止。