检测linux负载过高时重启php的shell脚本

发布时间:2019-10-11编辑:脚本学堂
本文分享一例shell脚本,用于检测当Linux负载过高时重启php,监测php-fpm并重启,效果不错,有需要的朋友参考下。

服务器php-fpm经常负载高,于是写了一个shell/ target=_blank class=infotextkey>shell脚本来检查负载并重启php。
可以根据服务器的情况来决定要负载超过多少时重启php。

系统:centos 5.9 64位

shell脚本内容:
vi check-php.sh
 

复制代码 代码示例:

#!/bin/sh
#edit: www.jb200.com
#
TOP_SYS_LOAD_NUM=1
SYS_LOAD_NUM=`uptime | linuxjishu/13830.html target=_blank class=infotextkey>awk '{print $(NF-2)}' | sed 's/,//'`

echo $(date +"%y-%m-%d") `uptime`
if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM"|bc` -eq 1 ]
then
echo "#0#" $(date +"%y-%m-%d %H:%M:%S") "pkill php-fpm" `ps -ef | grep php-fpm | wc -l`
/etc/init.d/php-fpm stop
sleep 8
pkill php-fpm
sleep 8
for i in 1 2 3
do
if [ `pgrep php-fpm | wc -l` -le 0 ]
then
/etc/init.d/php-fpm start
sleep 30
echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start php-fpm" `ps -ef | grep php-fpm | wc -l`
fi
done
else
if [ `pgrep php-fpm | wc -l` -le 0 ]
then
/etc/init.d/php-fpm start
sleep 30
echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start php-fpm" `ps -ef | grep php-fpm | wc -l`
fi
fi

定时执行:
*/3 * * * * /root/shell/check-php.sh >>/var/log/check-php.log

在运行脚本时,可能会出现如下的错误提示:
: line 6: bc: command not found
: line 6: [: -eq: unary operator expected
这说明没有找到bc命令,centos系统中使用:yum -y install bc 安装即可。