參考:https://www.jb51.net/program/31838687q.htm
nohup是什麼
nohup
是Linux和Unix系統中的一個命令,其作用是在終端退出時,讓程序在後臺繼續執行。它的全稱為“no hang up”,意為“不掛起”。nohup
命令可以讓你在退出終端或關閉SSH連線後繼續執行命令。
nohup語法規則
nohup命令的基本語法如下:
1 |
|
其中的引數含義如下:
COMMAND
:需要在後臺執行的命令或指令碼。ARGS
:命令或指令碼的引數。> output-file
:輸出重定向到指定的檔案中。2> error-file
:錯誤資訊重定向到指定的檔案中。&
:將命令放在後臺執行。
nohup命令的執行過程分為以下幾個步驟:
- nohup命令將當前shell的標準輸入、標準輸出和標準錯誤輸出全部重定向到
/dev/null
裝置中,避免被關閉終端的訊號所中斷。 - nohup命令將程序放到後臺執行,並將程序的PID輸出到終端。
- 程序開始執行,並將標準輸出和標準錯誤輸出重定向到指定的檔案中。
- 使用者可以退出終端或關閉終端視窗,程序仍然在後臺執行。
在工作中,我們很經常跑一個很重要的程式,有時候這個程式需要跑好幾個小時,甚至需要幾天,這個時候如果我們退出終端,或者網路不好連線中斷,那麼程式就會被中止。而這個情況肯定不是我們想看到的,我們希望即使終端關閉,程式依然可以在跑。
要讓PHP程式在Linux後臺執行,可以使用nohup命令配合&符號。nohup命令可以使程序在使用者登出後繼續執行,&可以將程序放到後臺執行。
nohup 命令是英語片語 no hangup 的縮寫,意思是不結束通話,也就是指程式不退出。這個命令會使程式忽略 HUP 訊號,保證程式能夠正常進行。HUP 訊號有些人可能比較陌生,它是在終端被中止的時候向它所關聯的程序所發出的訊號,程序收到這個訊號後就會中止執行。所以如果你不希望程序被這個訊號幹掉的話,就可以忽略這個訊號。而 nohup 命令做的就是這個事情。
php程式在linux後臺執行
1
|
命令: nohup php socket.php & |
這樣關閉終端也不會斷開了