Linux後台執行程式

2021-10-08 07:24:58 字數 913 閱讀 7780

jobs

#檢視任務,返回任務編號n和程序號

bg %n #將編號為n的任務轉後台執行

fg %n #將編號為n的任務轉前台執行

ctrl+z #掛起當前任務

ctrl+c #結束當前任務

注:如果要使在前台執行任務放到後台執行,則先要用ctrl+z掛起該任務,然後用bg使之後臺執行。

到後台執行的程序,其父程序還是當前終端shell的程序,而一旦父程序退出,則會傳送hangup訊號給所有子程序,子程序收到hangup以後也會退出。如果我們要在退出shell的時候繼續執行程序,則需要使用nohup忽略hangup訊號,或者setsid將將父程序設為init程序(程序號為1)

$ nohup ./test.sh & 

$ setsid ./test.sh &

回車執行,再回車,視窗中會顯示乙個程序號

如果中途想關閉,可執行:kill -9 程序號。如果想檢視命令執**況,可執行:cat nohup.out

日誌記錄

無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的nohup.out 檔案中。如果當前目錄的nohup.out檔案不可寫,輸出重定向到$home/nohup.out檔案中。如果沒有檔案能建立或開啟以用於追加,那麼 command 引數指定的命令不可呼叫。

使用時注意

在當shell中提示了nohup成功後,還需要按終端上鍵盤任意鍵退回到shell輸入命令視窗,然後通過在shell中輸入exit來退出終端;如果在nohup執行成功後直接點關閉程式按鈕關閉終端的話,這時候會斷掉該命令所對應的session,導致nohup對應的程序被通知需要一起shutdown,起不到關掉終端後呼叫程式繼續後台執行的作用。

Linux後台執行程式

shell command dev null 2 1 最後乙個符號 意思是讓程式在後台執行。dev null 的作用是將標準輸入轉向null,這樣就忽略當前的指令碼標準輸出。2 1 的作用是將標準錯誤連線至標準輸出,也將被忽略。一直不明白1 2的作用。原來!作業系統預設指定3個檔案 0標準輸入 1標...

Linux後台執行程式

在我們平常的時候執行程式的時候會產生很多的資訊,這些資訊有時候有用,有時候沒用,不過這些資料都會在該程式的log中儲存,所以把這些資訊放在前台就不是很好。我們可以將指令碼放在後台執行,不要將這些資訊顯示出來。將shell放入後台執行 比如 指令碼名稱 storm.sh 後台執行 storm.sh 這...

Linux 後台執行程式

nohup mqtt dev null 2 1 的意思是在後台執行,在執行 a.out 的時候,即使你用ctrl c,那麼a.out照樣執行 因為對sigint訊號免疫 但是要注意,如果你直接關掉shell後,a.out程序同樣消失。nohup的意思是忽略sighup訊號,所以當執行nohup a....