问题

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 &
 
 

Linux 开机启动 php socket的更多相关文章

  1. Linux 开机启动

    Linux开机启动(bootstrap)   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机开机是一个神秘的过程.我们只是 ...

  2. linux 开机启动过程详解

    Linux开机执行内核后会启动init进程,该进程根据runlevel(如x)执行/etc/rcx.d/下的程序,其下的程序是符号链接,真正的程序放在/etc/init.d/下.开机启动的程序(服务等 ...

  3. linux开机启动

    开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机 ...

  4. Linux开机启动程序详解

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

  5. Linux开机启动程序详解[转]

    Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...

  6. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图     方法2:利用命令行chkconfig命令进行设置 简要说明 ...

  7. LINUX开机启动过程

    LINUX开机启动过程 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息 ...

  8. Linux开机启动十步骤

    启动第一步--加载BIOS 启动第二步--读取MBR 启动第三步--Boot Loader 启动第四步--加载内核 启动第五步--用户层init依据inittab文件来设定运行等级 启动第六步--in ...

  9. Linux开机启动(bootstrap)上

    Linux开机启动(bootstrap)   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机开机是一个神秘的过程.我们只是 ...

随机推荐

  1. 封装海康SDK出现无法加载 DLL“..\bin\HCNetSDK.dll”: 找不到指定的模块

    今天在封装海康设备的时候出现了这么一个问题,在初始化的时候提升无法加载 DLL“..\bin\HCNetSDK.dll”: 找不到指定的模块. 在网上查找了几个方法,并不是很靠谱,于是从源头找找,是什 ...

  2. 20175317 《Java程序设计》第二周学习总结

    20175317 <Java程序设计>第二周学习总结 教材学习内容总结 第二周我学习了教材三四章的内容,了解了Java与C语言的相似与不同之处. 其中第二章学到了标识符与关键字.基本数据类 ...

  3. conda基本操作

    准备环境 # 下载并安装conda基础环境 $ wget https://mirror.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.3.1 ...

  4. spring boot的热加载(hotswap)

    官网上是叫hotswap,有人翻译成热部署,有人翻译成热加载 个人倾向于使用热加载在这个词,和谷歌翻译的热插拔相似. 关于个人理解 http://www.cnblogs.com/ptqueen/p/8 ...

  5. IO流的分类

    按内容分:字节流和字符流 按流向分:输入流和输出流 字节流: 输入流:InputStream 输出流:OutputStream 字符流: 输入流:FileReader 输出流:FileWriter

  6. eXosip sip

    eXosip是对osip的封装,是对sip协议的使用更简单.osip是gnu开源的sip协议实现. 介绍: http://savannah.nongnu.org/projects/exosip 下载地 ...

  7. day16_python_1124

    圈子 圈子是互相影响,走着走着就散了. 道不同不相为谋,与人的认知相关. 圈子如何正向引导? 圈子能决定你的人生走向. 圈子能决定你的格局. 01 昨日内容回顾 序列化模块 将一个数据结构 ----& ...

  8. 网络编程-day1

    一. *** C/S架构:客户端(client)/服务端(server)架构, B/S架构:浏览器(browser) / 服务端(server)架构 软件cs架构:浏览器,qq,微信,陌陌等等 硬件c ...

  9. 【转】RAID 技术发展综述

    原文地址:https://blog.csdn.net/liuaigui/article/details/4581970   摘要 :现代企业信息化水平不断提高,数据已经取代计算成为了信息计算的中心.这 ...

  10. 二、JAVA基本数据类型:内置数据类型,引用类型

    变量的值存储在内存中,内存管理系统通过变量的类型分配存储空间,且该空间只能存储该类型数据,通过定义不同的变量,在内存中储存不同类型的数据. JAVA的两大数据类型 1. 内置数据类型 2.引用数据类型 ...