通过crontab命令,我们可以在固定的间隔时间执行指定的系统指令或shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。
Linux任务调度的工作主要分为两类:
系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存。 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有更新,这些工作可以由每个用户自行设置。我设置的是每周一到周五定时发送邮件。
系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行,root用户的任务调度操作可以通过”crontab–uroot–e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。
命令格式
crontab [-u user] file crontab [-u user] {-e|-l|-r}
说明: -u user:是指设定指定user的时程表,这个前提是你必须要有其权限(比如说是root)才能够指定他人的时程表。如果不指定user,使用crontab就会用在全局root下。 -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。 -r :删除目前的定时服务。 -l :查看目前的定时服务。
时程表基本格式
* * * * * command 分 时 日 月 周 命令
- 第1列分钟0~59
- 第2列小时0~23(0表示子夜)
- 第3列日1~31
- 第4列月1~12
- 第5列星期0~7(0和7表示星期天)
- 第6列是要运行的命令
举例:
脚本位置:/search/odin/mailauto/sele.py 我要设置每周一到周五下午两点执行该脚本,命令如下:
00 14 * * 1-5 python3 /search/odin/mailauto/sele.py
使用命令crontab–e,打开crontab文件,将命令保存。 之后重启crontab服务就生效了,重启命令:
/usr/sbinservicecrond restart
使用实例
实例1:每两个小时重启一次apache
0 */2 * * * /sbin/servicehttpd restart
实例2:每天7:50开启ssh服务
50 7 * * * /sbin/servicesshd start
实例3:每天22:50关闭ssh服务
50 22 * * * /sbin/servicesshd stop
实例4:每月1号和15号检查/home磁盘
0 0 1,15* *fsck/home
实例5:每小时的第一分执行/home/bruce/backup这个文件
1 * * * * /home/bruce/backup
实例6:每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
00 03 * * 1-5 find /home "*.xxx" -mtime 4 -execrm{} ;
实例7:意思是每月的1、11、21、31日是的6:30执行一次ls命令
30 6 */10 * *ls
实例8:每1分钟执行一次command
* * * * * command
实例9:每小时的第3和第15分钟执行
3,15 * * * * command
实例10:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command
实例11:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
实例12:每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command