摘要:使用命令后,作業(yè)被提交到后臺(tái)運(yùn)行,當(dāng)前控制臺(tái)沒有被占用,但是一但把當(dāng)前控制臺(tái)關(guān)掉退出帳戶時(shí),作業(yè)就會(huì)停止運(yùn)行。
通常情況下我們需要對(duì)服務(wù)器的某一個(gè)服務(wù)進(jìn)行監(jiān)控, 以確定該服務(wù)是在正常運(yùn)行, 一般使用linux的計(jì)劃任務(wù)可以實(shí)現(xiàn), 但是計(jì)劃任務(wù)的最小執(zhí)行時(shí)間間隔是秒,往往并不能滿足我們的要求, 這時(shí)候Swoole的毫秒定時(shí)器就該出場(chǎng)了
監(jiān)控代碼
/dev/null | grep ". self::PORT . " | grep LISTEN | wc -l"; $result = shell_exec($shell); if($result != 1) { // 發(fā)送報(bào)警服務(wù) 郵件 短信 /// todo echo date("Ymd H:i:s")."error".PHP_EOL; } else { echo date("Ymd H:i:s")."succss".PHP_EOL; } } } // nohup swoole_timer_tick(2000, function($timer_id) { (new Server())->port(); echo "time-start".PHP_EOL; });
運(yùn)行
注意以下命令要求使用絕對(duì)路徑
nohup /usr/bin/php /home/vagrant/code/swoole/script/bin/jian.php > /home/vagrant/code/swoole/script/bin/log.txt &
補(bǔ)充說明
&
當(dāng)在前臺(tái)運(yùn)行某個(gè)作業(yè)時(shí),終端被該作業(yè)占據(jù);可以在命令后面加上& 實(shí)現(xiàn)后臺(tái)運(yùn)行。例如:
sh test.sh &
適合在后臺(tái)運(yùn)行的命令有find、費(fèi)時(shí)的排序及一些shell腳本。在后臺(tái)運(yùn)行作業(yè)時(shí)要當(dāng)心:需要用戶交互的命令不要放在后臺(tái)執(zhí)行,因?yàn)檫@樣你的機(jī)器就會(huì)在那里傻等。不過,作業(yè)在后臺(tái)運(yùn)行一樣會(huì)將結(jié)果輸出到屏幕上,干擾你的工作。如果放在后臺(tái)運(yùn)行的作業(yè)會(huì)產(chǎn)生大量的輸出,最好使用下面的方法把它的輸出重定向到某個(gè)文件中:
command > out.file 2>&1 &
這樣,所有的標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都將被重定向到一個(gè)叫做out.file的文件中。
nohup
使用&命令后,作業(yè)被提交到后臺(tái)運(yùn)行,當(dāng)前控制臺(tái)沒有被占用,但是一但把當(dāng)前控制臺(tái)關(guān)掉(退出帳戶時(shí)),作業(yè)就會(huì)停止運(yùn)行。nohup命令可以在你退出帳戶之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程。nohup就是不掛起的意思(no hang up)。該命令的一般形式為:
nohup command &
如果使用nohup命令提交作業(yè),那么在缺省情況下該作業(yè)的所有輸出都被重定向到一個(gè)名為nohup.out的文件中,除非另外指定了輸出文件:
nohup command > myout.file 2>&1 &
使用了nohup之后,很多人就這樣不管了,其實(shí)這樣有可能在當(dāng)前賬戶非正常退出或者結(jié)束的時(shí)候,命令還是自己結(jié)束了。所以在使用nohup命令后臺(tái)運(yùn)行命令之后,需要使用exit正常退出當(dāng)前賬戶,這樣才能保證命令一直在后臺(tái)運(yùn)行。
2>&1解析
command >out.file 2>&1 &
command>out.file是將command的輸出重定向到out.file文件,即輸出內(nèi)容不打印到屏幕上,而是輸出到out.file文件中。
2>&1 是將標(biāo)準(zhǔn)出錯(cuò)重定向到標(biāo)準(zhǔn)輸出,這里的標(biāo)準(zhǔn)輸出已經(jīng)重定向到了out.file文件,即將標(biāo)準(zhǔn)出錯(cuò)也輸出到out.file文件中。最后一個(gè)&, 是讓該命令在后臺(tái)執(zhí)行。
試想2>1代表什么,2與>結(jié)合代表錯(cuò)誤重定向,而1則代表錯(cuò)誤重定向到一個(gè)文件1,而不代表標(biāo)準(zhǔn)輸出;換成2>&1,&與1結(jié)合就代表標(biāo)準(zhǔn)輸出了,就變成錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29794.html
摘要:是一個(gè)基于擴(kuò)展實(shí)現(xiàn)的輕量級(jí)高性能的常駐內(nèi)存型的和應(yīng)用服務(wù)框架高度封裝了,,服務(wù)器,以及基于實(shí)現(xiàn)可擴(kuò)展的服務(wù),同時(shí)支持包方式安裝部署項(xiàng)目?;趯?shí)用,抽象事件處理類,實(shí)現(xiàn)與底層的回調(diào)的解耦,支持同步異步調(diào)用,內(nèi)置等常用組件等。 swoolefy swoolefy是一個(gè)基于swoole擴(kuò)展實(shí)現(xiàn)的輕量級(jí)高性能的常駐內(nèi)存型的API和Web應(yīng)用服務(wù)框架,高度封裝了http,websocket,ud...
摘要:出題思路本次題目來自于我的一個(gè)外包項(xiàng)目實(shí)踐?;睾现票荣愐苑昼姙橐换睾?。選手在比賽過程中需要盜取到對(duì)手的密鑰,以竊聽他方內(nèi)容,并修改己方密鑰以放泄露動(dòng)態(tài)該部分同樣由中心服務(wù)器與完成。 Author: RytiaDate: 20190427Blog: www.zzfly.net本人才學(xué)疏淺,望君不吝賜教 背景 受學(xué)校老師邀請(qǐng),為學(xué)弟學(xué)妹舉辦分享會(huì)介紹 AWD 相關(guān)經(jīng)驗(yàn),本人一時(shí)頭腦風(fēng)暴采用...
閱讀 3054·2021-11-22 09:34
閱讀 3646·2021-08-31 09:45
閱讀 3859·2019-08-30 13:57
閱讀 1682·2019-08-29 15:11
閱讀 1687·2019-08-28 18:04
閱讀 3231·2019-08-28 17:59
閱讀 1570·2019-08-26 13:35
閱讀 2195·2019-08-26 10:12