linux後台執行程式

2022-04-05 01:21:29 字數 852 閱讀 3863

通常想讓某個程式在後台執行,可以在命令末尾新增&。

但是如果遇到斷網或關閉終端時,系統會向前後台程序傳送sighup訊號,使得命令被迫終止。

為了避免退出使用者程序自動關閉的情況,我們可以採用nohup命令。

語法:nohup command [arg...] [&]

描述:執行commnand[arg]命令,並忽略所有結束通話訊號(sighup)。預設標準輸出和標準錯誤預設重定向到nohup.out檔案中。

命令:nohup ./start-dishi.sh 1>output 2>error &

或者 nohup ./**.sh >output 2>&1 & (將標準錯誤輸出(2)重定向到標準輸出(1)中,&代表後台執行)

p.s. 1.如果不關心輸出且輸出很大時可以 重定向到/dev/null中。所有東西都可以定向到/dev/null,但是無法開啟。

p.s. 2.作業系統中的常用的三個流:

0:標準輸入流 stdin

1:標準輸出流 stdout

2:標準錯誤流 stderr

一般當我們用 > console.txt,實際是 1>console.txt的省略用法;< console.txt ,實際是 0 < console.txt的省略用法。

p.s. 3.在使用nohup python **.py & 時nohup.out 檔案內容始終為空,直到執行結束。這裡是由於python 開啟輸出快取導致的,可以加引數-u避免使用輸出快取。

然鵝,nohup命令使用起來還是比較麻煩的。 因此強烈建議使用screen命令。通過screen 命令可以進行多視窗的管理,終端關閉時自動掛起程序到後台執行。總體是非常方便的。具體使用的命令可以參見下面的鏈結。

screen:

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....