定时任务是常常被用到的,例如系统备份、数据导入等。在Linux中,系统提供了cron服务,可以很便捷地实现定时执行。本文记录了cron的使用技巧。
基本概念
cron有crond和crontab两个概念。
crond是后台守护进程的名称,拿来实际执行脚本,它在系统中是仍然运行的。
crontab是一个工具,拿来管理定时任务列表,例如添加作业、编辑作业、删除作业、查看作业。作为管理工具,不会后台运行,须要自动调用,执行完手动退出。
开启crond服务
crond默认没有开启,须要自动启动一次服务。服务启动后,会仍然运行,即使是重启系统,也会手动运行。相关命令使用systemctl执行:
添加、查看定时任务
假定我们须要定时导入MySQL到指定文件,创建/home/apps/backup.sh文件,并赋于执行权限,内容如下:
/usr/local/mysql/bin/mysqldump--skip-lock-tables-udemo-pdemodemo>/home/apps/demo.sql
之后创建一个作业文件/home/apps/backup.cron,每晚1点整执行backup.sh,内容如下:
01***/home/apps/backup.sh
之后使用crontab添加定时任务,命令如下:
crontab/home/apps/backup.cron
查看定时任务,任务早已添加成功,命令如下:
crontab-l
01***/home/apps/backup.sh
cron的定时任务须要在作业文件中设定执行时间,包括时分秒、天数等,一共7个部份,格式如下:
分时日月礼拜年命令
其中:
时:必须,可选0-23,可设置,-*/特殊字符
日:必须,可选1-31,可设置,-*?/LW特殊字符
月:必须,可选1-12或jan-dec,可设置,-*/特殊字符
礼拜:必须,可选0-7或sun-sta,可设置,-*?/L#特殊字符
年:非必须,可留空,可设置1970-2099,可设置,-*/特殊字符
几个特殊字符的涵义如下:
*全部。意思是在该时间的任意点都应该执行?不指定,任意。仅用于日(月)和日(周)。005*
?代表每位月的第5天零点,不论礼拜几。00?*1代表每周一,不论是当月的哪天。
,多个值的分隔符linux at 定时执行,比如1,5,10
-代表连续值红帽linux系统下载,比如1-20
/步长。比如5/15,代表从5开始,以15为步长。因而,当5/15坐落分钟的位置时linux at 定时执行,表示小时内的第5、20、35和50分钟。
L最后三天。可以是每月最后三天或则每周最后三天。假如用在天(周)数组,而且后面加数字,则表示最后一个周N。诸如5L,表示最后一个周六(5表示周日,L表示最后)。
W工作日,指周日到周三的任意三天
#表示第几个的意思,比如6#3,表示当月第3个礼拜六(6表示周日,3表示第3个)
举例如下:
实例1:每1分钟执行一次myCommand
*****myCommand
实例2:每小时的第3和第15分钟执行
3,15****myCommand
实例3:在下午8点到11点的第3和第15分钟执行
3,158-11***myCommand
实例4:每隔七天的早上8点到11点的第3和第15分钟执行
3,158-11*/2**myCommand
实例5:每周一早上8点到11点的第3和第15分钟执行
3,158-11**1myCommand
实例6:晚上的21:30重启smb
3021***/etc/init.d/smbrestart
实例7:每月1、10、22日的4:45重启smb
4541,10,22**/etc/init.d/smbrestart
实例8:每周六、周日的1:10重启smb
101**6,0/etc/init.d/smbrestart
实例9:每晚18:00至23:00之间每隔30分钟重启smb
0,3018-23***/etc/init.d/smbrestart
实例10:每礼拜六的下午11:00pm重启smb
023**6/etc/init.d/smbrestart
实例11:每一小时重启smb
**/1***/etc/init.d/smbrestart
实例12:早上11点到晚上7点之间,每隔一小时重启smb
*23-7/1***/etc/init.d/smbrestart
删掉定时任务
crontab-r删掉所有作业。若果只删掉部份,须要通过编辑来实现。
编辑定时任务
使用crontab-e可以编辑定时任务,手动打开vim编辑器redhat linux 9.0,直接更改即可。编辑完成后,立刻生效,不须要重新添加。编辑不影响backup.cron文件,因而不建议crontab-e直接更改。最好是更改cron文件之后重新添加任务。这样可以保证有个备份,便捷日后使用和查看。
查看任务日志
在作业执行出现异常(或作业脚本写日志)时,cron服务会输出日志。查看的地址坐落/var/log下。如ls/var/log|grepcron。
微.信.搜一搜程序之心,每周一三五原创更新。