Linux

使用者註銷後如何使用nohup繼續執行命令?

  • April 7, 2020

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 和更早版本)的方式。

引用自:https://serverfault.com/questions/769824