Ubuntu下定时任务crontab的使用

最近一直在处理公司的事情,所以博客也停更了。

现在的场景:我们组里每天都会开一个每日会议,用来总结当天的一些工作内容,但是总是需要人工来更新每天的文档,比较麻烦,为了节省这每天的一点点时间用来打球,我决定来写个自动更新小脚本。并且需要在周一至周五的5点运行一次脚本来更新每天的文档。所以才了解到了crontab这个工具。
当我们遇到以上的这些场景,我们可能又不在电脑前,那该怎么处理?

在ubuntu中就有一个很好的工具帮助我们处理这种情况的问题,那就是crontab!!

1.如果没有cron可以使用以下命令安装

$ sudo apt-get install cron

2.crontab命令常见用法

2.1cron服务命令:

启动:service cron start
重启:service cron restart
停止:service cron stop
重新载入配置: service cron reload  

2.2cron常用命令

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的所有调度任务 

3.定时执行任务

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分时运行;
当然,以上的时间均是系统默认时间,可以根据自己的需求进行修改

3.自定义设置cron执行任务

在终端中使用如下命令打开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

3.1前面时间案例

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分钟,执行一次打印命令

你可能感兴趣的:(#,▶linux,ubuntu)