阿小信大人的头像
Where there is a Python, there is a way. 阿小信大人

crontab file2016-12-26 09:50

自己有一个crontab的定时任务文件,可以通过crontab file命令进行配置定时任务,但是直接这样会覆盖原本的定时任务,所以在执行命令前需要先备份原本的定时任务,再把它和自己的定时任务合并在一起后再使用crontab file

因为是在一个一键安装脚本里面配置定时任务,安装过程可能中断失败等,crontab可能会重复配置,为了避免这种情况需要在合并文件的时候进行去重操作,有两种方式,第一种是给自己的crontab加上注释范围,每次合并是先进行删除。第二种是合并的时候直接去掉重复的行,但是必须要保持原有顺序,不然你可能配置的环境变量可能就跑到最后一行去了。

mycrontab.txt

# mycron start
PYTHONPATH=$PYTHONPATH:/data/service
*/1 * * * * /data/.venv/bin/python /data/service/cron/myscript.pyc >> /data/log/crontab.log 2>&1
# mycron end

删除注释范围,init-crontab-sed-delete.sh

1
2
3
4
5
6
7
8
#!/usr/bin/bash
echo "init crontab start"
crontab -l > /data/default.crontab
# clear my old crontab
sed '/# mycron start/,/# mycron end/d' -i /data/default.crontab
cat /data/default.crontab mycrontab.txt > combined.crontab
crontab combined.crontab
echo "init crontab end"

直接去重,init-crontab-awk-uniq.sh

1
2
3
4
5
6
7
#!/usr/bin/bash
echo "init crontab start"
crontab -l > /data/default.crontab
# uniq crontab
awk '!NF || !a[$0]++' /data/default.crontab mycrontab.txt > combined.crontab
crontab combined.crontab
echo "init crontab end"

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Linux/Mac#  
分享到:
阅读[761] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

发表评论