nohup <command> <arg> &
当我通过 SSH 连接到 Linux 服务器时,如果我想运行一个命令并确保在我从 SSH 注销后它会继续在后台运行,我将使用上述命令。
最近我正在使用一个名为Bitnami Node.js stack的服务器堆栈。它是一个独立的软件包。安装目录下的bin文件夹中有一个node
二进制文件。
在命令行中,我可以使用node
命令来运行我的 JS 程序:node <js_program.js>
. 没有问题。
但是,我想在从 SSH 注销后继续运行该程序。当我运行nohup <installation_dir>/nodejs/bin/node <js_program.js> > <stdout.out> &
时,程序将在后台运行。但是,当我从 SSH 注销时,程序也会立即终止。在这种情况下,该nohup
命令似乎无效。
我该如何解决这个问题?
跑步:
将使 stderr 和 stdin 保持打开状态。相反,运行:
或者:
这将重定向标准输出并关闭标准输入。
请记住,如果您的命令无法从标准输入中读取,它可能会中止。
如果您安装了该
at
软件包,并且您没有被拒绝(直接通过/etc/at.deny
,或隐式通过/etc/at.allow
)使用它,请尝试使用以下任何一种:或者:
并在提示符处指定您的命令
at>
。at
这应该安排命令通过守护程序立即运行。这就是我传统上“模拟”
nohup
具有损坏nohup
实现的系统(例如 AIX 5.3 和更早版本)的方式。我通过更改从 SSH shell 终端注销的方式设法解决了这个问题。
我没有单击
X
关闭 PuTTY 窗口的按钮,而是exit
在 SSH shell 终端中键入以注销。现在,在我注销后,该进程能够继续在后台运行。如果我单击
X
按钮关闭窗口,后台进程将立即终止。