Linux運維工程師必備:使用nohup持久化運行命令

一、何為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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JUKC的頭像JUKC
上一篇 2024-10-04 00:13
下一篇 2024-10-04 00:13

相關推薦

發表回復

登錄後才能評論