46 | Linux Crontab 定时任务

导读:本篇文章讲解 46 | Linux Crontab 定时任务,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1 crontab介绍

crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

  • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
  • /etc/crontab 这个文件负责调度各种管理和维护任务。
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
  • 我们可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

2 crontab的使用

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有

  • 取值范围内的所有数字
  • / 每过多少个数字
  • 从X到Z
  • ,散列数字

3 常用操作

3.1 安装命令

yum install vixie-cron
yum install crontabs

3.2 操作命令

/sbin/service crond start //启动服务  
/sbin/service crond stop //关闭服务  
/sbin/service crond restart //重启服务  
/sbin/service crond reload //重新载入配置

3.3 crontab

crontab任务配置基本格式:

*               *          *         *         *                command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)     命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
  • 星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
  • 整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
  • 逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
  • 正斜线(/)可以用来指定间隔频率。在范围后加上 / 意味着在范围内可以跳过 integer。譬如,0-59/2
    可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
  • 开头为井号(#)的行是注释,不会被处理。

4 实例

  • 实例1:每1分钟执行一次test
 * * * * * test
  • 实例2:每小时的第3和第15分钟执行
3,15 * * * * test
  • 实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * test
  • 实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2  *  * test
  • 实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 test
  • 实例6:每晚的21:30重启tst
30 21 * * * /etc/init.d/tst restart
  • 实例7:每月1、10、22日的4 : 45重启tst
45 4 1,10,22 * * /etc/init.d/tst restart
  • 实例8:每周六、周日的1 : 10重启tst
10 1 * * 6,0 /etc/init.d/tst restart
  • 实例9:每天18 : 00至23 : 00之间每隔30分钟重启tst
0,30 18-23 * * * /etc/init.d/tst restart
  • 实例10:每星期六的晚上11 : 00 pm重启tst
0 23 * * 6 /etc/init.d/tst restart
  • 实例11:每一小时重启tst
0 */1 * * * /etc/init.d/tst restart
  • 实例12:晚上11点到早上7点之间,每隔一小时重启tst
0 23-7/1 * * * /etc/init.d/tst restart
  • 实例13:每天晚上1点调用/home/test.sh
0 1 * * * /home/test.sh
  • 实例14:每10钟调用一次/home/test.sh
*/10 * * * * /home/test.sh
  • 实例15:上面的例子表示每晚的21:30重启apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
  • 实例16:上面的例子表示每月1、10、22日的4 : 45重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
  • 实例17:上面的例子表示每周六、周日的1 : 10重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
  • 实例18:上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
  • 实例19:上面的例子表示每星期六的11 : 00 pm重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
  • 实例20:每一小时重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
  • 实例21:晚上11点到早上7点之间,每隔一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
  • 实例22:每月的4号与每周一到周三的11点重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
  • 实例23:一月一号的4点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
  • 实例24:每半小时同步一下时间
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79892.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!