nohup命令

Ray1997發表於2024-05-23

後臺執行命令:nohup

nohup命令:nohup是不結束通話的意思( no hang up)。如果你正在執行一個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup命令。該命令忽略所有掛(SIGHUP)訊號,可以在你退出帳戶/關閉終端之後繼續執行相應的程序。

該命令的一般格式為:

nohup yourcommand &

  • yourcommand:啟動物件命令。可以跟該命令需要的各種引數。

  • &是指在後臺執行,但當使用者推出(掛起)的時候,命令自動也跟著退出. nohup與&結合起來,可以實現不結束通話的後臺執行。

實現螢幕輸出記錄到日誌檔案nohup yourcommand 2>&1 &

  • 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;

  • 2>&1是將標準錯誤(2)重定向到標準輸出(&1),標準輸出(&1)再被重定向輸入到日誌檔案中。

如果希望將日誌輸出到別的檔案中,可以增加一個檔案路徑引數。如下:

nohup yourcommand >out.log 2>&1 &

其中out.log是儲存輸出的檔名稱;

實時監測日誌輸出內容命令:tail

tail 命令是nohup命令的好搭檔。配合-f引數,可以實時監視向日志檔案增加的資訊。

tail-fout.log
tail -f 等同於–follow=descriptor,根據檔案描述符進行追蹤,當檔案改名或被刪除,追蹤停止
tail -F 等同於–follow=name --retry,根據檔名進行追蹤,並保持重試,即該檔案被刪除或改名後,如果再次建立相同的檔名,會繼續追蹤
tailf 等同於tail -f -n 10,與tail -f不同的是,如果檔案不增長,它不會去訪問磁碟檔案,所以tailf特別適合那些便攜機上跟蹤日誌檔案,因為它減少了磁碟訪問,可以省電。

監測程式是否在正常執行中:ps

ps命令也可以和nohup命令配合使用,用於顯示當前程序 (process) 的狀態。可以監視後臺程式是否在正常執行中或者已經掛掉。

ps -ef|grep yourcommand

  • -ef 引數顯示所有命令,連帶啟動時的命令列引數

相關文章