Linux监控进程,进程关闭自动重启方案
corntab+shell脚本检测进程
这个方案简单不用额外安装软件。
缺点是存在间隔,corntab设置1秒执行一次shell脚本也是存在间隔的
#!/bin/bash
#@author smallForest
#@email 1032817724@qq.com
proc_name="xiaofei.php" #进程名字
proc_num()
{
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
return $num
}
proc_num
number=$?
echo $number
if [ $number -eq 0 ]
then
#cd /Applications/MAMP/htdocs/aa/bb/public #进入路径
nohup php xiaofei.php >xiaofei 2>&1 & # 创建守护进程
fi
supervisor方案
此方案反应速度快,对系统资源消耗较大
安装Python
yum install python-setuptools
安装Supervisor
easy_install supervisor
查看是否成功
echo_supervisord_conf
有输出就正确
创建目录,初始化配置
mkdir /usr/supervisor
echo_supervisord_conf > /usr/supervisor/supervisord.conf
mkdir /usr/supervisor/supervisord.d/
修改系统配置文件
vim /usr/supervisor/supervisord.conf
include增加一行
[include]
files = /usr/supervisor/supervisord.d/*.conf
启动supervisor
supervisord -c /usr/supervisor/supervisord.conf
lsof -i:9001查看端口
创建子配置文件
vim /usr/supervisor/supervisord.d/supervisor_test_one.conf
输入
[program:test_one]
command=php /root/lianxi_php/xiaofei.php ; 被监控的进程路径
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
重新启动supervisor
supervisord -c /usr/supervisor/supervisord.conf
会有一个supervisor>
输入reload
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。