你的位置:首页 > 操作系统

[操作系统]Linux crontab任务调度

一、crontab说明

Linux crontab任务调度是在规定的时间频率内去执行相应的任务。

二、crontab文件详情

1、crontab文件在Linux中的/etc/crontab

2、查看crontab文件  # vi /etc/crontab  文件描述如下

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# 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

三、crontab 命令说明

crontab [-u username] [-l|-e|-r]

参数:

-u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;

-e: 编辑crontab 的工作内容;

-l: 查阅crontab的工作内容;

-r: 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑。

特殊字符代表意义
*(星号)代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是*,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。
,(逗号)

代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:

0 3,6 * * * command

时间还是有五列,不过第二列是 3,6 ,代表3与6都适用

-(减号)代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:

20 8-12 * * * command

仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思

/n(斜线)n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:

*/5 * * * * command

用*与/5来搭配,也可以写成0-59/5,意思相同

四、实例

crontab -e  ;打开当前用户调度编辑

0 */2 * * * /sbin/service httpd restart 意思是每两个小时重启一次apache 50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘1 * * * * /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} ;#每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。30 6 */10 * * ls ; #每月的1、11、21、31日是的6:30执行一次ls命令

最后感谢下面两位博主的分享

Linux任务调度运行机制参考