当前位置 博文首页 > linux进程监控shell脚本代码

    linux进程监控shell脚本代码

    作者:admin 时间:2021-06-24 18:33

    为确保php页面在后台运行,写了一个监控脚本,假设程序异常退出,那么可以自动重启。

    shell脚本/usr/local/scripts/receve.sh内容:

    #!/bin/bash
    #funtion:keep receve.php running
    PHP="/usr/local/php5/bin/php"
    PROGRAM="receve.php"
    #start dameo
    $PHP /home/httpd/$PROGRAM >>/usr/local/scripts/phpshell/receve.out &
    chp;
    echo "$chpid" > /usr/local/scripts/phpshell/receve.sid
    echo "child pid is $chpid"
    echo "status is $?"
    while [ 1 ]
    do
    wait $chpid
    exitstatus="$?"
    echo "child pid=$chpid is gone, $exitstatus" >>/usr/local/scripts/phpshell/receve.php_error.log
    echo `date` >> /usr/local/scripts/phpshell/receve.php_error.log
    echo "**************************" >>/usr/local/scripts/phpshell/receve.php_error.log
    sleep 10
    $PHP /home/httpd/$PROGRAM >> /usr/local/scripts/phpshell/receve.out &
    chp;
    echo "$chpid" > /usr/local/scripts/phpshell/receve.sid
    echo "next child pid is $chpid"
    echo "next status is $?"
    done

    需要保证监控脚本正常运行,在每天凌晨自动重启脚本/usr/local/scripts/restart_r.sh,写入crontab:

    #!/bin/bash
    echo "" >/tmp/receve_pid.txt
    /bin/ps ax | /bin/grep "receve.sh" | /bin/grep -v "grep" | /bin/awk '{print $1}' >/tmp/receve_pid.txt
    no1pid=`cat /tmp/receve_pid.txt | sort -r`
    no2pid=`cat /usr/local/scripts/phpshell/receve.sid | sort -r`
    if [ -z $no1pid ];then
      echo "receve.sh pid is null, receve.sh is not running."
     else  
      /bin/kill -9 "$no1pid"  
      echo "receve.sh killed"
    fi
    sleep 3
    if [ -z $no2pid ];then
      echo "receve.php pid is null, receve.php is not running."
     else
      /bin/kill -9 "$no2pid"
      echo "receve.php killed"
    fi
    rm -rf /usr/local/scripts/phpshell/receve.sid 
    sleep 3 
    /usr/local/scripts/receve.sh > /dev/null &
    

    crontab:

    复制代码 代码如下:

    #restart receve.sh
    10 00 * * * /usr/local/scripts/restart_r.sh

    注意:脚本命名要避免重复,避免自己kill掉自己的进程。

    js
    下一篇:没有了