TP5 通过shell建立PHP守护程序
用 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守护程序的更多相关文章
- shell登录模式及其相应配置文件(转)
		参考<linux命令.编辑器与shell编程>(清华大学出版社) 当启动shell时,它将运行启动文件来初始化自己.具体运行哪个文件取决于该shell是登陆shell还是非登陆shell的 ... 
- 【渗透课程】特别篇-主流网站程序Oday大全以及拿shell思路
		版权和内容说明: 这篇文章不是本站编写,是从网络上摘抄的,但是经过了本站的改写优化,并将内容,格式规范化. 本篇说明:这篇文章结合了前辈们前几年一路挖掘出来的主流程序漏洞以及思路, 小编写在前面是想让 ... 
- Linux——模拟实现一个简单的shell(带重定向)
		进程的相关知识是操作系统一个重要的模块.在理解进程概念同时,还需了解如何控制进程.对于进程控制,通常分成1.进程创建 (fork函数) 2.进程等待(wait系列) 3.进程替换(exec系列) 4 ... 
- 配置和启动脚本(bash shell学习01)
		bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls ... 
- Linux Shell系列教程之(二)第一个Shell脚本
		本文是Linux Shell系列教程的第(二)篇,更多shell教程请看:Linux Shell系列教程 通过上一篇教程的学习,相信大家已经能够对shell建立起一个大体的印象了,接下来,我们通过一个 ... 
- 6.linux 用户和权限的建立
		一.用户和权限的建立 su 用户名 切换用户,如果是root用户切换其他用户,不需要输入密码. exit 可以切换回上一个用户 linux 操作系统用户 ... 
- 浅谈ASM中的SLB
		接触Azure几个月,总想写点什么,迟迟没有动笔,一是怕自己技术粗鄙,写的东西会令人捧腹,二是工作原因,时间比较匆忙,在此再次声明,以下写的东西都是我个人看法,若有不足,请多多包涵!!! 情景是这样的 ... 
- IP欺骗原理与过程分析
		IP欺骗攻击法 原创:r00t <r00t@unsecret.org> QQ: 22664566 http://www.unsecret.org --------------------- ... 
- CVE-2014-4877 && wget: FTP Symlink Arbitrary Filesystem Access
		目录 . 漏洞基本描述 . 漏洞带来的影响 . 漏洞攻击场景重现 . 漏洞的利用场景 . 漏洞原理分析 . 漏洞修复方案 . 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wget是一个从网络 ... 
随机推荐
- Javascript模块化编程require.js的用法
			JS模块化工具requirejs教程(一):初识requirejs http://www.runoob.com/w3cnote/requirejs-tutorial-1.html JS模块化工具req ... 
- 隐藏 FastAdmin 列表中的拖动排序按钮
			隐藏 FastAdmin 列表中的拖动排序按钮 就是以下这个按钮,想先删除不要. 刚开始在 CMS 插件中的栏目中发现没有,以为在哪个位置中,但找到半天的 weigh 都没有找到weigh 的字眼. ... 
- 【转】linux sed命令详解
			原文网址:http://www.iteye.com/topic/587673 1. Sed简介sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( ... 
- hadoop之  YARN配置参数剖析—RM与NM相关参数
			参数均需要在yarn-site.xml中配置: 1. ResourceManager相关配置参数 (1) yarn.resourcemanager.address 参数解释:ResourceManag ... 
- 深入理解Java虚拟机,intern
			1,在java1.7下面,intern不再复制实例,只存第一个引用,也就是new出来的有可能和intern相同(第一次情况 2,平时的new已经暗含了一个常量池,所有不适合上面情况, 参考:https ... 
- 一个filebeat实例 设置多topic设置
			方法1:一实例多topic: https://discuss.elastic.co/t/filebeat-5-0-output-to-kafka-multiple-topics/67934 The d ... 
- 几个与JVM相关的JDK工具:jps, jstat, jmap
			在项目中遇到OOM(Out of Memory)的问题,为了分析内存和JVM的垃圾回收器GC问题,一并把JVM相关的一些工具也研究了一下: jps:Java进程查看工具,实际上它和Unix/Linux ... 
- 关于 android 环信无法正确获取昵称的问题
			本案例中 username 记录成 userId了, nick 始终为空...,这是 getNick() 取得的就是 username..... 如果想自己取得自己系统的nickname则 做以下调整 ... 
- java Long
			1. Long.valueOf(b) 返回的是对象 public static Long valueOf(String s) throws NumberFormatException { )); } ... 
- JavaWeb的过滤器Filter
			Filter的作用是在请求到达web资源(HTML.css.Servlet.Jsp)之前拦截,做一个预处理. 创建一个类实现Filter接口,在web.xml中对文件进行配置 <filter&g ... 
