使用场景
如果进程存在,则不执行。不存在则执行。
错误的定时
*/21 7-20 * * * pgrep -f crawler/run.py || python3.6 crawler/run.py > /dev/null 2>&1
正确的写法
*/21 7-20 * * * pgrep -f crawler/run.py; [ $? == 0 ] && python3.6 crawler/run.py > /dev/null 2>&1
解释
在shell中直接使用 ||
可以,但是在 crontab
中却一直都不行。不断测试才发现是 ||
的问题,但 &&
是可以在crontab中使用的。最终改成[ $? == 0 ]
替代。