黑帽联盟

 找回密码
 会员注册
查看: 1503|回复: 0
打印 上一主题 下一主题

[脚本语言] 检测linux负载过高时重启php脚本

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    当服务器的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 安装.

    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部