定时任务不能确认完成时间的解决方法

有些脚本因为要循环的执行,比如每天执行一次,或者执行完后重新执行一次,使用crontab设置定时任务指定每天执行时间。

但是这样存在一个问题,如果一个脚本一天执行不完,这样第二天到了时间会开启第二个脚本执行,会有重叠执行的情况,而其实可能需要的情况只是第一次执行完后执行第二次,不一定需要指定时间执行。

仔细想了一下发现其实被crontab的定时指定给局限了思路,另外的思路是写一个脚本监听进程,使用crontab每隔一段时间监听,看进程是否还存在,不存在则重新启动。

脚本可以如下:

 #!/bin/bash
PID=$(ps aux|grep "进程特殊标示(最好奇怪一点不要用通用的脚本名,负责监听无效)"| grep -v grep | awk '{printf $2}')
if [ $PID > 0 ]; then
    echo $PID
    exit
fi
# 重启脚本命令