Linux crontab命令:定时执行任务

Linux crontab(英文全拼:cron table)是用来定期执行程序的命令,当安装完成操作系统之后,默认便会启动此任务调度命令。

crond 进程每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

linux 任务调度的工作主要分为以下两类:

  • 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
  • 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新的邮件,这些工作可由每个用户自行设置

语法格式:crontab [参数]

常用参数:

-e编辑该用户的计时器设置
-l列出该用户的计时器设置
-r删除该用户的计时器设置
-u指定要设定计时器的用户名称
–help显示帮助信息

参考实例

创建、编辑计划任务:

[root@bunian ~]# crontab -e  

查看当前计划任务:

[root@bunian ~]# crontab -l 

删除某条计划任务:

[root@bunian ~]# crontab -r 

在正式创建计划任务前,我们首先来了解一下使用crond服务设置任务的参数格式

PS:如果有些字段没有设置,则需要使用星号 * 占位

minute   hour   day   month   week   command     顺序:分 时 日 月 周 命令 

使用crond设置任务的参数字段说明:

minute表示分钟,是从0到59之间的任何整数
hour表示小时,是从0到23之间的任何整数
day表示日期,是从1到31之间的任何整数
month表示月份,是从1到12之间的任何整数
week表示星期,是从0到7之间的任何整数,其中0或7代表星期日
command要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
参数字段说明

下面举几个具体的例子:

* * * * * /bin/ls  //每一分钟执行一次 /bin/ls

0 6-12/3 * 12 * /usr/bin/backup  //在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup

0 17 * * 1-5 mail -s "hi" bunian@domain.name < /tmp/maildata  //周一到周五每天下午 5:00 寄一封信给 bunian@domain.name

20 0-23/2 * * * echo "hello"  //每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "hello"

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 "bunian.txt" -mtime +4 -exec rm {} \;  //每周一至周五3点钟,在目录/home中,查找文件名为bunian.txt的文件,并删除4天前的文件。

30 6 */10 * * ls  //意思是每月的1、11、21、31日是的6:30执行一次ls命令

每周二、四、六的凌晨1点30分,使用tar命令把某个网站的数据目录进行打包处理,使其作为一个备份文件。我们使用crontab -e命令来创建计划任务。为自己创建计划任务无需使用-u参数,具体的实现效果的参数如crontab -l命令结果所示:

[root@bunian ~]# crontab -e 
no crontab for root - using an empty one 
crontab: installing new crontab 
[root@bunian ~]# crontab -l 
30 1 * * 2,4,6 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot  
© 版权声明
THE END