用 vim建立 /etc/init.d/keepalive文件

#!/bin/bash
# chkconfig: 2345 10 90
# description: Start and Stop KEEP_ALIVE PHP="/usr/local/php/bin/php" KEEP_ALIVE_DIV="/home/wwwroot/keep-alive.qunarmei.com"
KEEP_ALIVE_SCRIPT='think' #服务脚本
KEEP_ALIVE_NAME="ChatServer" #你自定义的服务名称
KEEP_ALIVE_PID="${KEEP_ALIVE_DIV}/application/chat/command/${KEEP_ALIVE_NAME}.pid" #服务PID
KEEP_ALIVE_LOG="${KEEP_ALIVE_DIV}/${KEEP_ALIVE_NAME}.log" #服务运行日志 记录错误信息 #判断程序是否已经在运行
status_script(){
ps -fe|grep ${KEEP_ALIVE_SCRIPT}|grep ${KEEP_ALIVE_NAME}|grep -v grep
if [ $? -eq 0 ]
then
echo ${0}' Is running'
running=1 elif [ $? -ne 0 ]
then
echo $0" is NOT running"
running=2
fi
} #启动脚本,先判断脚本是否已经在运行
start_script(){
status_script
if [ ${running} -eq 1 ]
then
echo ${0}' Is starting ...'
else
echo 'start' ${0} '...'
cd ${KEEP_ALIVE_DIV}
nohup ${PHP} ${KEEP_ALIVE_SCRIPT} ${KEEP_ALIVE_NAME}>/dev/null 2>${KEEP_ALIVE_LOG} &
echo $! > ${KEEP_ALIVE_PID}
echo "start finish,PID $!"
fi
} #停止脚本
stop_script(){ status_script
if [ ${running} -ne 1 ]
then
echo ${0}' no starting '$?...
else
PIDS=`ps aux|grep ${KEEP_ALIVE_SCRIPT}|grep ${KEEP_ALIVE_NAME}| grep -v grep |awk '{print $2}'`
for kill_pid in ${PIDS}
do
kill -TERM ${kill_pid} >/dev/null 2>&1
echo "Kill pid ${kill_pid} .."
done
echo 'stop complete'
return 1
fi } #重启脚本
reload_script(){
stop_script
sleep 3
start_script
}
#入口函数
handle(){
case $1 in
start)
start_script
;;
stop)
stop_script
;;
status)
status_script
;;
reload)
reload_script
;;
restart)
reload_script
;;
*)
echo 'KEEP_ALIVE OF THIS SERVER IS '${0} 'status|start|stop|restart';
;;
esac
} if [ $# -eq 1 ]
then
handle $1
else
echo 'KEEP_ALIVE OF THIS SERVER IS '${0} 'status|start|stop|restart';
fi
  • 把文件权限设成 755
  • chmod 755 /etc/init.d/keepalive
  • 设成开机启动
  • chkconfig keepalive on
  • 搞定 试一下
  • service keepalive status
    
    service keepalive start
    
    service keepalive 
    
    service keepalive stop

如果你的将服务不稳定,可以把他加到计划任务定时重启 保证后端一直执行

dos2unix shell/keepalive.sh

TP5 通过shell建立PHP守护程序的更多相关文章

  1. shell登录模式及其相应配置文件(转)

    参考<linux命令.编辑器与shell编程>(清华大学出版社) 当启动shell时,它将运行启动文件来初始化自己.具体运行哪个文件取决于该shell是登陆shell还是非登陆shell的 ...

  2. 【渗透课程】特别篇-主流网站程序Oday大全以及拿shell思路

    版权和内容说明: 这篇文章不是本站编写,是从网络上摘抄的,但是经过了本站的改写优化,并将内容,格式规范化. 本篇说明:这篇文章结合了前辈们前几年一路挖掘出来的主流程序漏洞以及思路, 小编写在前面是想让 ...

  3. Linux——模拟实现一个简单的shell(带重定向)

    进程的相关知识是操作系统一个重要的模块.在理解进程概念同时,还需了解如何控制进程.对于进程控制,通常分成1.进程创建  (fork函数) 2.进程等待(wait系列) 3.进程替换(exec系列) 4 ...

  4. 配置和启动脚本(bash shell学习01)

    bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls ...

  5. Linux Shell系列教程之(二)第一个Shell脚本

    本文是Linux Shell系列教程的第(二)篇,更多shell教程请看:Linux Shell系列教程 通过上一篇教程的学习,相信大家已经能够对shell建立起一个大体的印象了,接下来,我们通过一个 ...

  6. 6.linux 用户和权限的建立

    一.用户和权限的建立       su  用户名       切换用户,如果是root用户切换其他用户,不需要输入密码.     exit  可以切换回上一个用户       linux 操作系统用户 ...

  7. 浅谈ASM中的SLB

    接触Azure几个月,总想写点什么,迟迟没有动笔,一是怕自己技术粗鄙,写的东西会令人捧腹,二是工作原因,时间比较匆忙,在此再次声明,以下写的东西都是我个人看法,若有不足,请多多包涵!!! 情景是这样的 ...

  8. IP欺骗原理与过程分析

    IP欺骗攻击法 原创:r00t <r00t@unsecret.org> QQ: 22664566 http://www.unsecret.org --------------------- ...

  9. CVE-2014-4877 && wget: FTP Symlink Arbitrary Filesystem Access

    目录 . 漏洞基本描述 . 漏洞带来的影响 . 漏洞攻击场景重现 . 漏洞的利用场景 . 漏洞原理分析 . 漏洞修复方案 . 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wget是一个从网络 ...

随机推荐

  1. [LeetCode系列] 最长回文子串问题

    给定字符串S, 找到其子串中最长的回文字符串.   反转法: 反转S为S', 找到其中的最长公共子串s, 并确认子串s在S中的下标iS与在S'中的下标iS'是否满足式: length(S) = iS ...

  2. 基于Tomcat 的WEB Project存在的安全漏洞总结

    1 检查工具:Acunetix Web Vulnerability Scanner V9破解版 2 检查漏洞说明结果显示: 2.1 HTML Form Without CSRF Protection ...

  3. 进程基本-进程创建,僵尸进程,exec系列函数

    Linux系统中,进程的执行模式划分为用户模式和内核模式,当进程运行于用户空间时属于用户模式,如果在用户程序运行过程中出现系统调用或者发生中断事件,就要运行操作系统(即核心)程序,进程的运行模式就变为 ...

  4. html页面转换成pdf

    一般页面都是.jsp页面,所以要把.jsp转换成html,在生成pdf,在网上找了好多方法,只有用一个插件,wkhtmltopdf-0.8.3.exe,生成的pdf会相对的好看. 先附上我做的.jsp ...

  5. 熟练使用Linux系统信息类命令

    系统信息类命令 – dmesg命令 dmesg命令用实例名和物理名称来标识连到系统上的设备. dmesg命令显示系统诊断信息.操作系统版本号.物理内存大小以及其他信息. 系统启动时,屏幕上会显示系统C ...

  6. java版本特性总结

    学java这么久,对其每个版本的特性不是怎么了解,今天总结一下. 1.4: java NIO,基于多路复用技术(基于IO) 1.5 枚举.foreach.static导入 范型(重要) 注解(配置文件 ...

  7. EF 汇总函数使用注意事项Max()/Min()等

    一.字符串类型最大值 1.字符串类型的最大值,和数据库的字典排序最后一个相同,如果存在返回null //字符串最大值,是字典排序最后一个 string max1 = _context.students ...

  8. Python 2.75升级3.6.3

    https://blog.csdn.net/wwwdaan5com/article/details/78218277 Centos 7 默认yum安装python 是2.7.5, (网上看了很多升级都 ...

  9. Oracle Tip: Choosing an efficient design for Boolean column values

    Takeaway: When designing a database table structure, it's important to choose an efficient strategy ...

  10. HDFS NameNode HA 部署文档

    简介: HDFS High Availability Using the Quorum Journal Manager Hadoop 2.x 中,HDFS 组件有三个角色:NameNode.DataN ...