问题

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

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

 方案

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

  1. 写一个实现延时启动的脚本myscript,在第一行加入如下内容:

    # 用于延时启动3分钟
    sleep
  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.  信息。

在开机启动脚本中判断启动脚本是否包含该信息,以便执行不同逻辑

 #!/bin/bash

 # 保存 脚本运行结果
php1_start=$( \
cd /home/duoxuan/workspace/demo_test && \
/usr/bin/php test_php.php start -d \
| grep success |wc -l ) # 判断是否含有success输出,即是否运行成功
if [ $php1_start -gt ];then
echo 第一个运行成功 Start success.
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 &
 
 

最新文章

  1. [转] - Linux网络编程 -- 网络知识介绍
  2. Codeforces Round #129 (Div. 2)
  3. lamp.phpstudy.net
  4. HDFS dfsclient写文件过程 源码分析
  5. delphi 怎么把image上的图片粘贴到剪切板上
  6. 解析XML文件示例
  7. hdoj 5461 Largest Point
  8. 增强iOS应用程序性能的提示和技巧(25个)
  9. Hibernate实体对象继承策略
  10. Java - 路线图
  11. Java之split()方法
  12. CSS属性操作
  13. Gradle 1.12用户指南翻译——第三十三章. PMD 插件
  14. html 三列布局(两列自适应,一列固定宽度)
  15. 安卓开发_深入理解Handler消息传递机制
  16. C#中单问号(?)和双问号(??)的用法整理
  17. 行为类模式(四):迭代器(Iterator)
  18. 2017-04-26 ios ipv6那些事(已完美解决)
  19. STL——仿函数(函数对象)
  20. ny168 房间安排

热门文章

  1. 【Core内存】.NET Core 2.0中使用MemoryCache
  2. Web版记账本开发记录(五)
  3. vue render里面的nativeOn
  4. fast-route的使用
  5. windows服务项目的 安装 卸载 查看
  6. CentOS7下swap分区创建(添加),删除以及相关配置
  7. vs2013+qt5.3.2+pcl1.8.0+osg2.3开发环境配置
  8. sharing-jdbc实现读写分离及分库分表
  9. GDAL源码编译(32位)
  10. day060 ajax文件上传 json补充