平滑重啟
阿新 • • 發佈:2020-09-16
- 平滑重啟的上層指令在Linux中需要使用nohup進行,並指定輸出log的檔案及其位置,在指令末尾記得把“&”符號加上,如下:
alexander@alexander-desktop:~/Documents/Refers/SwooleLive/server/thinkphp/script/bin/server$ nohup php /home/alexander/Documents/Refers/SwooleLive/server/thinkphp/script/bin/server/ws.php > /home/alexander/Documents/Refers/SwooleLive/server/thinkphp/script/bin/server/ws.log &
-
nohup 英文全稱 no hang up(不掛起),用於在系統後臺不掛斷地執行命令,退出終端不會影響程式的執行。nohup命令,在預設情況下(非重定向時),會輸出一個名叫 nohup.out 的檔案到當前目錄下,如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $HOME/nohup.out 檔案中。
-
nohup的語法格式是:
nohup Command [ Arg … ] [ & ]
-
在上面的案例中,終端輸出“nohup: ignoring input and redirecting stderr to stdout”屬正常現象,表明重定向成功。
-
開啟程序之後,下次需要重啟時只需要執行平滑重啟指令碼即可實現,本案例所撰寫的平滑重啟的指令碼基於swoole框架,使用shell寫出,如下:
echo "loading..."
pid=`pidof live_master`
echo $pid
kill -USR1 $pid
echo "loading success"
- 這裡的
-USR1
就是用於重啟swoole的worker程序的訊號,還有類似於sigterm、sigusr2這類訊號。而live_master
則是在swoole中定義的程序別名,swoole裡面提供了swoole_set_process_name(/*string*/ $processName);
這個方法來定義程序別名,只需要在onStart回撥裡面執行即可定義,如下:
/**
* @param $server
*/
public function onStart($server)
{
swoole_set_process_name("live_master");
}
- 定義好程序別名並寫好平滑重啟指令碼之後即可儲存退出,用shell執行剛剛寫好的這個平滑重啟shell指令碼即可,如下:
sh reload.sh
作者:艾孜爾江