nohup在后臺常駐運行php腳本
nohup是什么
nohup
是Linux和Unix系統(tǒng)中的一個命令,其作用是在終端退出時,讓進程在后臺繼續(xù)運行。它的全稱為“no hang up”,意為“不掛起”。nohup
命令可以讓你在退出終端或關閉SSH連接后繼續(xù)運行命令。
nohup語法規(guī)則
nohup命令的基本語法如下:
1 |
|
其中的參數(shù)含義如下:
COMMAND
:需要在后臺運行的命令或腳本。ARGS
:命令或腳本的參數(shù)。> output-file
:輸出重定向到指定的文件中。2> error-file
:錯誤信息重定向到指定的文件中。&
:將命令放在后臺運行。
nohup命令的執(zhí)行過程分為以下幾個步驟:
- nohup命令將當前shell的標準輸入、標準輸出和標準錯誤輸出全部重定向到
/dev/null
設備中,避免被關閉終端的信號所中斷。 - nohup命令將進程放到后臺執(zhí)行,并將進程的PID輸出到終端。
- 進程開始執(zhí)行,并將標準輸出和標準錯誤輸出重定向到指定的文件中。
- 用戶可以退出終端或關閉終端窗口,進程仍然在后臺運行。
在工作中,我們很經(jīng)常跑一個很重要的程序,有時候這個程序需要跑好幾個小時,甚至需要幾天,這個時候如果我們退出終端,或者網(wǎng)絡不好連接中斷,那么程序就會被中止。而這個情況肯定不是我們想看到的,我們希望即使終端關閉,程序依然可以在跑。
要讓PHP程序在Linux后臺執(zhí)行,可以使用nohup命令配合&符號。nohup命令可以使進程在用戶注銷后繼續(xù)運行,&可以將進程放到后臺執(zhí)行。
nohup 命令是英語詞組 no hangup 的縮寫,意思是不掛斷,也就是指程序不退出。這個命令會使程序忽略 HUP 信號,保證程序能夠正常進行。HUP 信號有些人可能比較陌生,它是在終端被中止的時候向它所關聯(lián)的進程所發(fā)出的信號,進程收到這個信號后就會中止運行。所以如果你不希望進程被這個信號干掉的話,就可以忽略這個信號。而 nohup 命令做的就是這個事情。
php程序在linux后臺執(zhí)行
命令:nohup php socket.php &
這樣關閉終端也不會斷開了
在項目目錄會生成一個nohup.out文件,記錄著所有信息和異常
要關閉的話使用:
ps aux | grep php netstat -anp | grep (端口號)
查看PID,然后使用:kill (PID)
1、用nohup在后臺常駐運行php腳本:
nohup php -f /www/wwwroot/default/redis_subscribe.php &
2、查看進程:
ps -ef|grep redis_subscribe.php
3、查看所有進程:
ps -ef
4、查看某一進程:
ps [PID]
5、終止進程:
kill -9 [PID]
nohup命令常用方法
使用nohup命令啟動一個程序
如果你需要運行一個程序,即使對應的 Shell 被退出后依然保持運行,可以這樣使用 nohup 運行這個程序:
$ nohup command
當這個程序進行起來之后,這個程序?qū)?log 輸出及其錯誤日志都將被記錄在 nohup.out 文件里,這個文件一般位于家目錄或者當前目錄。
重定向程序的輸出
如果我不想把程序的輸出保存在家目錄或者當前目錄,我想保存在我指定的路徑,并且自定義文件名,要怎么操作?這時我們就可以使用重定向操作 > 。
比如,我現(xiàn)在有個腳本 myScript.sh 我想把它的輸出保存在家目錄下的 output 目錄下,文件名為 myOutput.txt ,可以這樣運行:
$ nohup ./myScript.sh > ~/output/myOutput.txt
使用nohup命令后臺啟動一個程序
如果想讓程序在后臺運行,可以加上 & 符號。但這樣運行之后,程序就無影無蹤了。想要讓程序重新回到終端,可以使用 fg 命令。
這個命令的輸出 log 將保存在 nohup.out 文件里,你可以使用 cat 或其它命令查看。第二行里 8699 這個數(shù)字代表這個命令對應的進程號,也就是 pid 。我們可以使用 ps 命令來找到這個進程。
使用nohup同時運行多個程序
如果你需要同時跑多個程序,沒必要一個個運行,直接使用 && 符號即可。比如,你想同時跑 mkdir ,ping,ls 三個命令,可以這樣運行:
$ nohup bash -c 'mkdir files &&ping -c 1 baidu.com && ls'> output.txt
終止跑在后臺的進程
上面有提到,nohup 命令結合 & 符號可以使進程在后臺運行,即使關閉了終端依然不受影響。這時,如果想要終止這個進程,要怎么操作呢?
最簡單的當屬 kill 命令,相信大家用過很多次了。
$ kill -9 PID
那要如何找到進程對應的 pid 呢?我們可以使用 ps 命令。
$ ps aux | grep myScript.sh
或者你使用 pgrep 命令也行。
接下來,再使用 kill 命令就可以終止該進程了。
$ kill -9 14942
總結
到此這篇關于nohup在linux后臺常駐運行php腳本的文章就介紹到這了,更多相關php程序在linux后臺執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
thinkphp實現(xiàn)面包屑導航(當前位置)例子分享
今天把博客一些細節(jié)完善了一下,其中修改了一下欄目頁和文章頁中的“當前位置”。2014-05-05Laravel + Elasticsearch 實現(xiàn)中文搜索的方法
這篇文章主要介紹了Laravel + Elasticsearch 實現(xiàn)中文搜索的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-02-02thinkPHP+phpexcel實現(xiàn)excel報表輸出功能示例
這篇文章主要介紹了thinkPHP+phpexcel實現(xiàn)excel報表輸出功能,結合具體實例形式分析了thinkPHP整合PHPExcel實現(xiàn)針對Excel文件相關操作技巧,需要的朋友可以參考下2017-06-06