linux 下写 shell kill掉运行时间超过5分钟的PHP进程

在linux下,如果我有一个php脚本经常卡住,占用100%的CPU,有没办法可以写个SHELL定时检查一下PHP进程有哪个运行时间超过5分钟的,就KILL掉?... 在linux 下,如果我有一个php脚本经常卡住,占用100%的CPU,有没办法可以写个SHELL定时检查一下PHP进程有哪个运行时间超过5分钟的,就KILL掉? 展开
 我来答
不知详解
推荐于2016-10-01 · 知道合伙人软件行家
不知详解
知道合伙人软件行家
采纳数:609 获赞数:2252
自学计算机。

向TA提问 私信TA
展开全部
可以的,能根据Cpu累积耗时杀掉程序。
相关进程名字要知道哈。
假设以php进程为名字。
p_name=php
while true
do
sleep 3
#每3秒检查一次。
pro="$(ps -A|grep "$p_name"|head -n1)"
time="$(echo $pro|awk '{
split($3,tab,/:/); if (tab[2]+tab[1]*60>=5) {print 1}else{print 0}
}')"
#上面那句利用awk判断时间是不是大于5分钟。是则输出1,否则输出0.
pid="$(echo $pro|awk '{print $1}')"
#如果为1 就杀掉那个进程。
if [ $time = '1' ]
kill -9 $pid
fi
done
追问
你好,
如果我的$p_name = 2.php
ps -A|grep 2.php |head -n1 这句出不来我的2.php的进程ID啊,KILL不掉

而且SHELL有报错
syntax error near unexpected token `fi'
追答
#!/bin/bash
p_name=vim
while true
do
sleep 3
#每3秒检查一次。
pro="$(ps -A|grep "\\"|sort -k3,3|head -n1)"
time="$(echo $pro|awk '{
split($3,tab,/:/); if (tab[2]+tab[1]*60>=5) {print 1}else{print 0}
}')"
#上面那句利用awk判断时间是不是大于5分钟。是则输出1,否则输出0.
pid="$(echo $pro|awk '{print $1}')"
echo $pid $pro
#如果为1 就杀掉那个进程。
if [ $time = '1' ];then
kill -9 $pid
fi
done

我疏忽了,if 少了一个then,还有进程要根据时间排序。否则会堵塞程序。
变量pro本来就不是进程名字哈。我们不需要进程名字。只需要进程号。
pid="$(echo $pro|awk '{print $1}')"

它根据pro变量得到进程ID。
也不是杀不掉,只是你要注意满足条件的进程不多
百度网友fa18e8f
2012-09-20 · 超过16用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:37.2万
展开全部
可以通过php.ini的配置实现,让php脚本最多只能生存5分钟.
修改 : max_execution_time = 300

shell 的话可以用crontab来做,定时检查. 具体的就不会写了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式