php – 如何在一段时间后重启supervisord程序?

是否可以配置supervisord在指定时间后重启程序?

假设我有一个CLI PHP脚本可能会挂起并停止响应.是否可以在2小时后重新启动此应用程序的所有实例?否则应该存在应用程序运行的情况,但它处于挂起状态(即不做任何工作并且不响应任何信号).

最佳答案 这是一个非常粗略的边缘解决方案(也许有人可以整理它),但由于supervisord有supervisorctl你可以运行这个以在X小时后重新启动所有作业(作为supervisord服务器上的cronjob)

例如:


#!/bin/bash
excludedprocesses=(somejob someotherjob)

for f in `supervisorctl status | awk '{print $1}' `;  do  
        echo "found $f"

        if [[ ${excludedprocesses[*]} =~ $f ]]
        then
                echo "Exluding $f as a restart candidate"
        else
                status=`supervisorctl status $f | awk '{print $2}'`

                if [ "$status" == "RUNNING" ] ; then
                        echo "$f is running"

                        uptimedays=`supervisorctl status $f | grep day`
                        timepart=`supervisorctl status $f | awk '{print $NF}' | awk -F ":" '{print $1}'`
                        if [[ -n $uptimedays ]] |[[ $timepart -gt 1 ]] ;
                        then
                                echo "Restarting $f due to uptime"
                                `supervisorctl restart $f`
                        fi  

                fi  
        fi  
        echo ""
done

点赞