Linux中使用crontab命令启用自定义定时任务实例

Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,有需要的朋友可以了解一下。

一 简介

Linux下的任务调度分为两类,系统任务调度和用户任务调度

系统任务调度:系统需要定期执行的任务,比如重启、日志清理等,其配置文件是:/etc/crontab

用户任务调度:某个用户需要定期执行的任务。用户可以使用 crontab 命令来配置自己的定时任务。所有用户配置的定时任务都存放在 /var/spool/cron/ 目录下,其文件名与用户名一致。如:root用户的所有定时任务就保存在 /var/spool/cron/root 文件中

二 crontab文件的含义

所有用户crontab文件都存放在 /var/spool/cron/ 目录下,以用户名命名。其中每一行都代表一项任务,每行的每个字段代表一项配置,它的格式一共分为六个字段,前五段是时间设置段,第六段是要执行的命令段,格式如下:

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

在以上各个字段中,还可以使用以下特殊字符:

*    代表所有可能的值,例如:如果month字段是星号,则表示在满足其它字段的约束条件后每月都执行该命令

,     用逗号隔开的值表示一个范围列表,例如:如果minute字段的值是“1,3,15”,则表示每小时的第1分钟、第3分钟和第15分钟都执行该命令

–    可以用整数之间的 – 表示一个整数范围,例如:如果day字段的值是“2-6”,则表示每月的第2天到底6天都执行该命令

/    可以用斜线表示命令的执行频率,例如:如果minute字段的值是“*/10”,则表示每十分钟执行一次命令

三 一个定时任务实例

某台服务器每10分钟向192.168.1.2进行时间同步:

[root@web01 cron]# vim /var/spool/cron/root

添加以下内容:

0-59/10 * * * * /usr/sbin/ntpdate -s 192.168.1.2

从上面的介绍可以知道,这句代码的意思是:从0到59分这个时间段每10分钟都执行时间同步命令,其时间同步服务器是192.168.1.2

四 一些其他实例

实例1:每1分钟执行一次command命令:* * * * * command

实例2:每小时的第3和第15分钟执行命令:3,15 * * * * command

实例3:在上午8点到11点的第3和第15分钟执行命令:3,15 8-11 * * * command

实例4:每两天的上午8点到11点的第3和第15分钟执行命令:3,15 8-11 */2 * * command

实例5:每个星期一的上午8点到11点的第3和第15分钟执行命令:3,15 8-11 * * 1 command

实例6:每晚的21:30重启smb命令:30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb命令:45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb命令:10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb命令:0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb命令:0 23 * * 6 /etc/init.d/smb restart

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。