一、何為nohup
nohup命令是在Unix和Linux操作系統上用於在系統關閉、用戶退出登錄或網絡中斷情況下繼續運行命令的一個程序,即不掛斷的運行命令。
當一個終端連接因某種原因斷開時,與該終端相關聯的進程會收到HUP(hangup)信號,這也是nohup命令得名的原因。使用nohup命令可使程序在後台運行,與當前用戶所在的Shell無關,並且可防止進程在連接退出時被Hangup信號所終止。
二、nohup的使用方法
nohup命令的使用十分簡單,只需在命令前加上nohup即可,同時結尾處加上&符號表示該命令掛起。
nohup command &
其中,command為要運行的命令,&符號表示掛起該命令,使其在後台繼續運行。
如下面的例子,使用nohup命令啟動一個Python腳本文件:
nohup python test.py &
執行上述命令後,系統將提示nohup.out的文件名以及進程號,同時Python腳本文件將在後台運行。
三、nohup的參數介紹
nohup命令除了基本的使用方法外,還提供了一些參數可供使用。
1. -n
指定輸出文件名。使用-n參數可指定nohup命令輸出信息寫入的文件名。例如,下面的命令將輸出重定向到mylog文件:
nohup -n mylog command &
2. -p
指定pid文件名。使用-p參數可指定nohup命令的pid文件名。pid文件是進程號ID存放的文件,通過該文件可隨時掌握nohup命令的進程情況。
nohup -p pidfile command &
3. -s
指定信號文件。使用-s參數可指定nohup命令的信號文件。信號文件用於存儲nohup命令接收到的信號。
nohup -s signalfile command &
四、nohup的示例
示例1:
在後台運行一個Python腳本,輸出信息保存到mylog文件中。
nohup -n mylog python test.py &
示例2:
在後台運行一個名為cp的進程,輸出信息保存到mylog文件中。
nohup -n mylog cp /path/from /path/to &
示例3:
在後台運行一個名為copy的進程,並把pid信息保存到my.pid文件中。
nohup -p my.pid copy /path/from /path/to &
示例4:
在後台運行一個名為myshell的shell腳本。
nohup sh myshell.sh &
五、注意事項
使用nohup命令後,可使命令在後台運行,即使用戶退出登錄,整個程序也仍然能夠運行,同時標準輸出和標準錯誤都被重定向到了nohup.out文件中。
然而,有些命令會試圖從標準輸入中獲取信息,此時可能會阻塞nohup命令的執行。為了避免這種情況,可以使用/dev/null將標準輸入重定向到空設備:
nohup command nohup.out 2>&1 &
六、總結
nohup命令是Linux運維工程師進行命令持久化運行的必備工具,能夠在後台使命令持續執行,即使用戶退出登錄,保證程序的正常運行。
原創文章,作者:JUKC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/135525.html