Linux 开机启动 php socket

问题

 php socket 服务在服务器重启后无法自动启动,需要添加开机启动脚本。有以下问题

  1. 开机延迟3分钟后,再启动socket服务
  2. socket服务有3个模块需要按照先后顺序启动  register>gateway>business_worker
  3. 每个模块单独进程,运行不同的启动脚本
  4. 启动脚本是交互式命令,在启动成功后需要输入 ctrl-c 结束命令

 

 方案

 ## 对于开机延迟启动,可以使用  参考地址 方案

  1. 写一个实现延时启动的脚本myscript,在第一行加入如下内容:             
    # 用于延时启动3分钟
    sleep 180    

  2. 修改文件 /etc/rc.local,增加如下一行: 
    nohup /path/myscript &

     nohup xxx & 参见我的另一随笔

  1. nohup 表示后台运行
  2. &    是与nohup一起的,表示不受终端关闭信号影响,保持后台运行。如果没有&,在终端关闭时,当前终端执行的nohup进程也会被stop

 

##  交互式命令,模拟输入 ctrl-c 结束

 首先,我需要模拟一个需要使用 ctrl-c 才能退出的脚本,用于测试是否可以工作

备注:使用 kill pid 可以直接退出 需要 ctrl+c 命令的进程。但查询资料后发现 socket php 脚本支持无交互式命令,或者说可以自动退出。

 

##  执行顺序逻辑

启动脚本在模块运行成功后会打印 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 -d  \
 7 | 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 &
 
 

posted on 2018-11-21 16:45  多选  阅读(491)  评论(0编辑  收藏  举报

导航