推荐书: Python开发最佳实践

ubuntu下使用cron执行定时任务更新代码

分享时@该用户已经被封, 我就能回答你的问题奥!

尽管在特定时间运行命令非常有用(at命令可以实现),但是在重复的时间间隔内自动运行程序也非常重要。您必须使用crontab来安排此类重复性作业,例如,如果您希望在每晚的午夜将文件备份到云端。

尽管在特定时间运行命令非常有用(at命令可以实现),但是在重复的时间间隔内自动运行程序也非常重要。您必须使用crontab来安排此类重复性作业,例如,如果您希望在每晚的午夜将文件备份到云端。

您可以通过将任务信息放在具有特定格式的文件中并使用crontab命令提交此文件来定时执行该任务。 cron守护程序 - crond - 每分钟检查任务信息并在指定时间执行任务。

来自cron任务的任何输出都将邮寄给提交任务的用户。 (在提交的任务信息文件中,您可以为邮寄的输出指定不同的收件人。)

谁可以使用cron来制定任务

两个配置文件控制谁可以使用crontab在Linux中调度cron作业:

  • /etc/cron.allow包含允许使用crontab命令提交任务的用户的名称。
  • /etc/cron.deny包含不允许使用crontab命令提交任务的用户的名称。

cron添加任务

使用crontab -e命令就能打开一个文本编辑器, 你可以在该文本的最后追加一样类似这样的配置:

5 0 * * * $HOME/myjob, 以空格为间隔, 每个字段的意义如下:

  • 第一位: 分钟
  • 第二位: 小时
  • 第三位: 日
  • 第四位: 月
  • 第五位: 星期几
  • 后面所有是你要定时执行的任务

上面的命令指的是, 在每天12:05执行myjob文件里的命令。

注意, 编辑完成文件以后, 使用:wq命令来保存和退出!

注意执行的命令文件必须具有可执行权限

使用这个命令, 使得你的文件具有可执行的权限, 否则你添加的定时任务时不能执行的。

1
chmod +x $HOME/myjob

cron查看定时任务

  • 查看root用户的所有任务
1
crontab -l
  • 查看某个用户testuser的所有定时任务:
1
crontab -u testuser -l
  • 查看daily(每日一次)任务logrotate
1
less /etc/cron.daily/logrotate
  • 同样道理可以查看每小时一次的任务
1
ls -la /etc/cron.hourly/

同样还有ron.weekly, cron.monthly等, 请自行实验!

cron即时调试

之前我给服务器添加了一个定时任务, 但是很长时间以后才发现, 任务总是执行失败的, 因为我没有调试这个任务。
所以我建议大家在修改了cron任务的时候, 可以执行这个命令, 即时立刻执行任务:

1
run-parts /etc/cron.daily

从字面就能理解, 他可以执行daily的任务, 也就是每日一次的任务, 除了daily, 还有hourly/weekly等, 具体你自己去ls /etc | grep cron查看。

注意
本文由jupyter notebook转换而来, 您可以在这里下载notebook
有问题可以直接在下方留言
或者给我发邮件675495787[at]qq.com
请记住我的网址: mlln.cn 或者 jupyter.cn