黑帽联盟

标题: 检测linux负载过高时重启php脚本 [打印本页]

作者: yun    时间: 2017-2-23 21:10
标题: 检测linux负载过高时重启php脚本
当服务器的php-fpm经常搞得负载高,又找不到的原因的时候,只能写个脚本来帮忙检查负载并重启php,这也是没办法的事情.大家可以根据自己服务器的情况来决定要负载超过多少就重启php,我这里只设定了负载到1就重启php.

系统:centos 5.9 64位

脚本内容:
vi check-php.sh
  1. #!/bin/sh
  2. TOP_SYS_LOAD_NUM=1
  3. SYS_LOAD_NUM=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`

  4. echo $(date +"%y-%m-%d") `uptime`
  5. if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM"|bc` -eq 1 ]
  6. then
  7. echo "#0#" $(date +"%y-%m-%d %H:%M:%S") "pkill php-fpm" `ps -ef | grep php-fpm | wc -l`
  8. /etc/init.d/php-fpm stop
  9. sleep 8
  10. pkill php-fpm
  11. sleep 8
  12. for i in 1 2 3
  13. do
  14. if [ `pgrep php-fpm | wc -l` -le 0 ]
  15. then
  16. /etc/init.d/php-fpm start
  17. sleep 30
  18. echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start php-fpm" `ps -ef | grep php-fpm | wc -l`
  19. fi
  20. done
  21. else
  22. if [ `pgrep php-fpm | wc -l` -le 0 ]
  23. then
  24. /etc/init.d/php-fpm start
  25. sleep 30
  26. echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start php-fpm" `ps -ef | grep php-fpm | wc -l`
  27. fi
  28. 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 安装.






欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5