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.每月 1
、10
、20
日的 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 ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1291 0 2020-12-11
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2025-01-17
今日天气
随机推荐
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:14条
- 本站总访问量 365285 次
@svmuvwpuqi 真棒!
@smdxydrauu 博主太厉害了!
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...