计划任务-反复发起?
最近写了一个计划任务: * */12 * * * cmd
本想要它每12小时执行一次,但是结果却出现 每天0时,12时开始,每分钟反复执行cmd,共计执行了60次,一个小时发起了60个任务!!!
百度了一下,也没查出来个什么所以然来
然后简单测试了一番才发现闹了个笑话,原来是计划任务的书写格式的有问题,分时日月周,得写清楚具体分钟去执行才行:
1 */12 * * * cmd
否则,没有指定哪一分钟,可不就成了每一分钟都来一次么
也不是没有其他解决办法,对于一个生命周期较长且需要反复执行的任务,可以有如下操作,这可以在指定时间范围内反复发起该任务(如备份任务),防止偶然事件导致任务失败:
但是解决方法可以有很多,例如:if [ $(ps -ef|grep cmd_keyword | wc -l) -gt 3 ];then exit 1;else cmd;fi
其中3的具体值可以多试几次,在crontab,里写入 */1 * * * * cmd&&ps -ef|grep cmd_keyword > ~/ps_cmd.log 查看一下具体情况,会产生哪几个进程,这个瞬时值可能不一定,以最大值为准
针对已发起的多个同名进程:可通过如下命令提前结束:ps -ef|grep cmd|awk '/cmd_keyword/{print $2}' |xargs -i kill -9 {}