Linux 開機啟動 php socket
阿新 • • 發佈:2018-11-21
信息 gateway 腳本 test target 沒有 bus pat class 命令的進程。但查詢資料後發現 socket php 腳本支持無交互式命令,或者說可以自動退出。
示例 編寫一個開機延遲啟動腳本名為 start_php-socket_reboot.sh 為其添加運行權限 chmod +x start_php-socket_reboot.sh 直接運行start_php-socket_reboot.sh
問題
php socket 服務在服務器重啟後無法自動啟動,需要添加開機啟動腳本。有以下問題
- 開機延遲3分鐘後,再啟動socket服務
- socket服務有3個模塊需要按照先後順序啟動 register>gateway>business_worker
- 每個模塊單獨進程,運行不同的啟動腳本
- 啟動腳本是交互式命令,在啟動成功後需要輸入 ctrl-c 結束命令
方案
## 對於開機延遲啟動,可以使用 參考地址 方案
- 寫一個實現延時啟動的腳本myscript,在第一行加入如下內容:
# 用於延時啟動3分鐘 sleep
- 修改文件 /etc/rc.local,增加如下一行:
nohup /path/myscript &
nohup xxx & 參見我的另一隨筆
- nohup 表示後臺運行
- & 是與nohup一起的,表示不受終端關閉信號影響,保持後臺運行。如果沒有&,在終端關閉時,當前終端執行的nohup進程也會被stop
## 交互式命令,模擬輸入 ctrl-c 結束
首先,我需要模擬一個需要使用 ctrl-c 才能退出的腳本,用於測試是否可以工作
備註:使用 kill pid 可以直接退出 需要 ctrl+c
## 執行順序邏輯
啟動腳本在模塊運行成功後會打印 Input "php test_php.php stop" to stop. Start success. 信息。
在開機啟動腳本中判斷啟動腳本是否包含該信息,以便執行不同邏輯
1 #!/bin/bash 2 3 # 保存 腳本運行結果 4 php1_start=$( 5 cd /home/duoxuan/workspace/demo_test && 6 /usr/bin/php test_php.php start -d7 | grep success |wc -l ) 8 9 # 判斷是否含有success輸出,即是否運行成功 10 if [ $php1_start -gt 0 ];then 11 echo 第一個運行成功 Start success. 12 fi
示例 編寫一個開機延遲啟動腳本名為 start_php-socket_reboot.sh 為其添加運行權限 chmod +x start_php-socket_reboot.sh 直接運行start_php-socket_reboot.sh
第一個運行成功 Start success.
第二個運行成功 Start success.
第三個運行成功 Start success.
將腳本添加到開機啟動中
nohup /workspace/start_php-socket_reboot.sh &Linux 開機啟動 php socket