后台運行命令: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 > myout.log 2>&1 &
其中myout.log是保存輸出的文件名稱;
實時監測日志輸出內容命令:tail
tail 命令是nohup命令的好搭檔。配合-f參數,可以實時監視向日志文件增加的信息。
tail -f myout.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 參數顯示所有命令,連帶啟動時的命令行參數