最近一直在处理公司的事情,所以博客也停更了。
现在的场景:我们组里每天都会开一个每日会议,用来总结当天的一些工作内容,但是总是需要人工来更新每天的文档,比较麻烦,为了节省这每天的一点点时间用来打球,我决定来写个自动更新小脚本。并且需要在周一至周五的5点运行一次脚本来更新每天的文档。所以才了解到了crontab
这个工具。
当我们遇到以上的这些场景,我们可能又不在电脑前,那该怎么处理?
在ubuntu中就有一个很好的工具帮助我们处理这种情况的问题,那就是crontab
!!
$ sudo apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
重新载入配置: service cron reload
1)crontab -u /*设定某个用户的cron服务*/
2)crontab -l /*列出某个用户cron服务的详细内容*/
3)crontab -r /*删除某个用户的cron服务*/
4)crontab -e /*编辑某个用户的cron服务*/
5)crontab -r 使用下面的命令移除已经计划的cron作业
6)crontab -ir 使用下面的命令移除所有已计划的cron作业,且无需再次确认。
例:
crontab -l -u jp //列出用户jp的所有调度任务
ununtu 通过调用 run-parts 命令,定时运行四个目录下的所有脚本。
1)/etc/cron.hourly,目录下的脚本会每个小时让执行一次,在每小时的2分钟时运行;
2)/etc/cron.daily,目录下的脚本会每天让执行一次,在每天0点17分时运行;
3)/etc/cron.weekly,目录下的脚本会每周让执行一次,在每周第七天的3点56分时运行;
4)/etc/cron.mouthly,目录下的脚本会每月让执行一次,在每月19号的5点32分时运行;
当然,以上的时间均是系统默认时间,可以根据自己的需求进行修改
在终端中使用如下命令打开cron配置文件:
$ sudo vim /etc/crontab
可以看到官方已经给出了基本的教程:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
我们只需要按格式写就行,例如:
格式:分钟 小时 一月的第几天 月份 周几 用户名 要执行的命令
8 18 * * * mckros python3 ~/文档/qtesttools-chengkai/qtesttools/feishu/Run.py >> ~/feishu.log
0 0 10,14,16 * * 每天上午10点,下午2点,4点触发
0 0/30 9-17 * * 朝九晚五工作时间内每半小时触发
0 0 12 ? * WED 表示每个星期三中午12点触发
0 0 12 * * 每天中午12点触发
0 15 10 ? * * 每天上午10:15触发
0 15 10 * * 每天上午10:15触发
0 15 10 * * 每天上午10:15触发
0 * 14 * * 在每天下午2点到下午2:59期间的每1分钟触发
0 0/5 14 * * 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0-5 14 * * 在每天下午2点到下午2:05期间的每1分钟触发
0 10,44 14 * 3 WED 每年三月的星期三的下午2:10和2:44触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
0 15 10 15 * * 每月15日上午10:15触发
0 15 10 L * * 每月最后一日的上午10:15触发
15,30,45,59 * * * * echo "xgmtest....." 表示,每隔15分钟,执行一次打印命令