rabbitMQ + nohup 服務端守護進程(一)

隨着互聯網的發展,php快速開發的特點,現在越來越多的團隊將php作爲服務端的編程語言,

nohup

nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那麼可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之後繼續運行相應的進程。

在缺省情況下該作業的所有輸出都被重定向到一個名爲nohup.out的文件中。

  1. nohup command > myout.file 2>&1 &

在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
2>&1是將標準錯誤(2)重定向到標準輸出(&1),標準輸出(&1)再被重定向輸入到myout.file文件中。

nohup和&的區別
& : 指在後臺運行

nohup : nohup運行命令可以使命令永久的執行下去,和用戶終端沒有關係,例如我們斷開SSH連接都不會影響他的運行,注意了nohup沒有後臺運行的意思;&纔是後臺運行

&是指在後臺運行,但當用戶推出(掛起)的時候,命令自動也跟着退出

結合起來用就是
nohup COMMAND &
這樣就能使命令永久的在後臺執行

例如:

執行命令

nohup yii test-server/start > tets.txt 2>&1 &

查看進程 jobs命令只看當前終端生效的,關閉終端後,在另一個終端jobs已經無法看到後臺跑得程序了,此時利用ps(進程查看命令)

jobs -l

斷開終端,查看進程

ps -ef | grep php

  501  5410     1   0  4:08下午 ??         0:00.05 php /usr/bin/yii test-server/start
  501  5888     1   0  4:10下午 ??        13:27.09 /Applications/PhpStorm.app/Contents/MacOS/phpstorm
  501  8723     1   0  4:25下午 ??         0:00.00 php /usr/bin/yii test-server/start
  501  8727  7248   0  4:25下午 ttys002    0:00.00 grep php

這就實現了守護進程.

注意
單獨執行 php myprog.php,當按下ctrl+c時就會中斷程序執行,會kill當前進程以及子進程。
php myprog.php &,這樣執行程序雖然也是轉爲後臺運行,實際上是依賴終端的,當用戶退出終端時進程就會被殺掉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章