Linux
使用者註銷後如何使用nohup繼續執行命令?
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
命令似乎無效。我該如何解決這個問題?
跑步:
nohup command ... > file &
將使 stderr 和 stdin 保持打開狀態。相反,執行:
nohup command ... > file 2>&1 <&- &
或者:
nohup command ... > logfile 2> errfile <&- &
這將重定向標準輸出並關閉標準輸入。
請記住,如果您的命令無法從標準輸入中讀取,它可能會中止。
如果您安裝了該
at
軟體包,並且您沒有被拒絕(直接通過/etc/at.deny
,或隱式通過/etc/at.allow
)使用它,請嘗試使用以下任何一種:echo "<installation_dir>/nodejs/bin/node <js_program.js> > <stdout.out>" | at now
或者:
at now
並在提示符處指定您的命令
at>
。
at
這應該安排命令通過守護程序立即執行。這就是我傳統上“模擬”
nohup
具有損壞nohup
實現的系統(例如 AIX 5.3 和更早版本)的方式。