Linux 定时任务 crontab 详解

文章
林里克斯

Linux 定时任务 crontab 详解


实验平台:CentOS Linux release 7.6.1810



一、命令详解


1.命令详解

$ crontab --help

Options:
 -u <user>  #指定用户编辑或查看其定时任务,只有 root 用户能使用
 -e         #编辑用户的定时任务内容
 -l         #列出用户的定时任务内容
 -r         #删除用户的定时任务内容
 -i         #删除前确认,意义就是是否确认删除。一个确认的过程
 -n <host>  set host in cluster to run users' crontabs
 -c         get host in cluster to run users' crontabs
 -s         selinux context
 -x <mask>  enable debugging

2.相关文件详解

/var/spool/cron/     #目录里存放的是每个用户的 crontab 定时任务,以创建者的名字命名
/etc/crontab        #文件负责调度各种管理和维护任务
/etc/cron.d/        #目录用来存放任何要执行的 crontab 文件或脚本
/etc/cron.deny     #文件里的用户不允许编辑或查看 crontab 定时任务
/etc/cron.allow      #仅允许文件里的用户编辑或查看 crontab 定时任务

我们还可以把脚本放在 /etc/cron.hourly/etc/cron.daily、/etc/cron.weekly/etc/cron.monthly 目录中,让它每小时/天/星期、月执行一次。

3.crontab 的语法格式:

* * * * * command

操作符有:

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

4.格式详解

# 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

*:   表示分钟,范围(0-59),* 代表每分钟,*/5 代表每 5 分钟, 1,3,5,7 代表第 1,3,5,7 分钟的时候
*:   表示小时,范围(0-23)
*:   表示日期,范围(1-31)
*:   表示月份,范围(1-12)
*:   表示周,范围(0-6)星期中的天(day of week),取值 0-6,或采用星期单词的英文简写

星号(*):代表全部的值,例如 day of month 字段如果是星号,则表示在满足其它字段的制约条件后每天执行该任务
逗号(,):可以用逗号分隔开的值指定一个列表,例如,"1,2,5,7,8,9"
中杠(-):可以中杠表示一个范围,例如 "2-6" 表示"2,3,4,5,6"
正斜线(/):可以用正斜线指定时间的间隔频率,例如minute字段,"0-30/5"表示在0-30的范围内每5分钟执行一次;"*/5"表示每十分钟执行一次。

command: 表示要执行的命令

5.解析文件的内容

# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
#SHELL      #所使用的 Shell
#PATH       #环境变量
#MAILTO     #表示执行结果有错误时,会将错误信息或显示的信息传递给此用户
#HOME       #家目录路径
#run-parts  #表示执行所跟目录下的脚本或任务

二、操作实例


1.每隔 30 分钟执行一次

*/30 * * * * /usr/bin/echo "test" >> /tmp/test.txt

2.每天早上 9 点执行一次

0 9 * * * /usr/bin/echo "It's nine o 'clock" >> /tmp/test.txt

3.每周六周日1 : 10 执行一次

10 1 * * 6,0 /usr/bin/echo "test" >> /tmp/test.txt

4.每月 11020 日的 18:00 执行一次

00 18 1,10,20 * * /usr/bin/echo "test" >> /tmp/test.txt

5.每 1 小时执行一次

0 */1 * * * /usr/bin/echo "test" >> /tmp/test.txt

6.晚上 11 点到早上 8 点之间每两个小时执行一次

0 23-7/2,8 * * * /usr/bin/echo "test" >> /tmp/test.txt

7.实例12:晚上11点到早上7点之间执行一次

* 23-7/1 * * * /usr/bin/echo "test" >> /tmp/test.txt

8.每个月的 4号 和每个星期周一周三早上11` 点

0 11 4 * 1-3 command line

Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

742 0 2020-12-11


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-04-29

今日天气
站点统计
  • 文章总数:240篇
  • 分类总数:29个
  • 评论总数:10条
  • 本站总访问量 216872 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!