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是一个从网络 ...
随机推荐
- c++中for的四种用法
#include <algorithm> #include <vector> #include <iostream> using namespace std; in ...
- [CLPR]BP神经网络的C++实现
文章翻译自: http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi ...
- hadoop之 YARN配置参数剖析—RM与NM相关参数
参数均需要在yarn-site.xml中配置: 1. ResourceManager相关配置参数 (1) yarn.resourcemanager.address 参数解释:ResourceManag ...
- jquery on() bind()绑定的点击事件在js动态新添加的元素生效
方法一:$('.class').on("click",function(){……}); 相当于 $('.class').bind("click",functio ...
- AngularJS 最佳实践
AngularJS 是一个 Web 应用框架,它实现了前端的 MVC 架构,能让开发人员很方便地实现业务逻辑. 举个栗子,要做到下面的效果,以前可能需要写一连串的 JavaScript 代码绑定 N ...
- SQL注入与安全防护---以PHP为例
一.什么是sql注入: 简单来说,当我们从前端的用户表单数据往后台数据库传输时,可能用户表单数据中的某些数据,会跟我们的后台发生“有机”反应,从而导致发生一些数据库的异常操作. 举个例子吧,以简单的用 ...
- 【路由达人】简单两步搞定小米路由新增功能-DDNS(解析域名地址转向在线工具)
DDNS(Dynamic Domain Name Server)是动态域名服务的缩写! 简单来说目前ISP大多为我们提供动态IP(如ADSL拨号上网),而很多设备或服务需要通过远程访问时需要一个固定的 ...
- "废物利用"也抄袭——“完全”DIY"绘图仪"<三、上位机程序设计>
上位机的程序主要是解析图片和生成较好的代码,现在实现的功能有灰度打印,二值打印,轮廓打印,骨骼打印.当然,必不可少的是打印大小的控制.测试了一些图片,总体来说,打印速度依次加快,因为打印的内容依次减少 ...
- 黄聪:WordPress实现HTML5预加载
WordPress实现HTML5预加载方法很简单,把下面代码: <?php if (is_archive() && ($paged > 1) && ($pa ...
- vue打包优化
网站首页第一次加载很慢,优化过后从十多二十秒缩短到了几秒,主要是打包的时候按需加载了,然后使用了gzip压缩. 这是优化之前的 发现vendor特别大,所有引用的第三方库都会打到这个包里面;另外就是之 ...