【发布时间】:2015-06-12 01:26:49
【问题描述】:
如何避免 cronjob 在同一命令上执行多次?我试图环顾四周并尝试检查和终止进程,但它不适用于以下代码。使用下面的代码,它会一直进入它应该“运行”的 else 条件。知道我做错了哪一部分吗?
#!/bin/sh
devPath=`ps aux | grep "[i]mport_shell_script"` | xargs
if [ ! -z "$devPath" -a "$devPath" != " " ]; then
echo "running"
exit
else
while true
do
sudo /usr/bin/php /var/www/html/xxx/import_from_datafile.php /dev/null 2>&1
sleep 5
done
fi
exit
定时任务:
*/2 * * * * root /bin/sh /var/www/html/xxx/import_shell_script.sh /dev/null 2>&1
【问题讨论】:
-
您可以创建一个 .lock 文件,该文件在作业执行结束时才被释放
-
^ 我该怎么做?可以发布完整的解决方案吗?
-
任务开始时触摸文件,任务完成时删除。或者通过 cron 将你的任务间隔更远,这样它就不会以这种方式重叠(假设这是可能的)。
-
^ 请发布解决方案?所以我会尝试并接受它。
标签: bash shell unix sh crontab