Linux 开机启动 php socket
Posted 多选
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 开机启动 php socket相关的知识,希望对你有一定的参考价值。
问题
php socket 服务在服务器重启后无法自动启动,需要添加开机启动脚本。有以下问题
- 开机延迟3分钟后,再启动socket服务
- socket服务有3个模块需要按照先后顺序启动 register>gateway>business_worker
- 每个模块单独进程,运行不同的启动脚本
- 启动脚本是交互式命令,在启动成功后需要输入 ctrl-c 结束命令
方案
## 对于开机延迟启动,可以使用 参考地址 方案
- 写一个实现延时启动的脚本myscript,在第一行加入如下内容:
# 用于延时启动3分钟 sleep 180
- 修改文件 /etc/rc.local,增加如下一行:
nohup /path/myscript &
nohup xxx & 参见我的另一随笔
- nohup 表示后台运行
- & 是与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 &
以上是关于Linux 开机启动 php socket的主要内容,如果未能解决你的问题,请参考以下文章