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

