是否可以配置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