linux命令-crontab

发布时间 2023-11-10 01:44:18作者: 你水喝多了

crontab

介绍:

用户定时任务(多用户-- 意味着每个用户的定时设置都是单独的)

crontab指令常见于Unix和类Unix的操作系统之中,用于设置周期性被履行的指令 ; 该指令从规范输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和履行; cron服务提供crontab命令来设定定时任务的

cron

  • cron服务位于/etc/init.d/cron
  • cron服务提供crontab命令来设定cron服务的

启动服务

systemctl status cron
systemctl start cron
systemctl enable cron

关闭服务

systemctl status cron
systemctl stop cron
systemctl disable cron

crontab

  • crontab命令位于/usr/bin/crontab
  • crontab命令设置定时任务由cron服务定时检查执行

语法:

cron

时间参数

允许的数值 允许的特殊字符 备注
0~59 - * / -
0~59 - * / -
小时 0~23 - * / -
日期 1~31 - * ? / L W C -
月份 1~12 JAN-DEC - * / -
星期 1~7 SUN-SAT - * ? / L C # 1 表示星期天,2 表示星期一,依次类推
年(可选) 留空,1970~2099 , - * / 自动生成,工具不显示该值

特殊字符

字符 含义 示例
* 表示匹配域的任意值 在分这个域使用 *,即表示每分钟都会触发事件。
表示匹配域的任意值,但只能用在日期和星期两个域,因为这两个域会相互影响。 要在每月的 20 号触发调度,不管每个月的 20 号是星期几,则只能使用如下写法:13 13 15 20 * ?。其中,因为日期域已经指定了 20 号,最后一位星期域只能用 ?,不能使用 *。如果最后一位使用 *,则表示不管星期几都会触发,与日期域的 20 号相斥,此时表达式不正确。
- 表示起止范围 在分这个域使用 5-20,表示从 5 分到 20 分钟每分钟触发一次。
/ 表示起始时间开始触发,然后每隔固定时间触发一次 在分这个域使用 5/20,表示在第 5 分钟触发一次,之后每 20 分钟触发一次,即 5、 25、45 等分别触发一次。
, 表示列出枚举值 在分这个域使用 5,20,则意味着在 5 和 20 分每分钟触发一次。
L 表示最后,只能出现在日和星期两个域 在星期这个域使用 5L,意味着在最后的一个星期四触发。
W 表示有效工作日(周一到周五),只能出现在日这个域,系统将在离指定日期最近的有效工作日触发事件。 在日这个域使用 5W,如果 5 号是星期六,则将在最近的工作日星期五,即 4 号触发。如果 5 号是星期天,则在 6 号(周一)触发;如果 5 号为工作日,则就在 5 号触发。另外,W 的最近寻找不会跨过月份。
LW 这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。
# 表示每个月第几个星期几,只能出现在星期这个域 在星期这个域使用 4#2,表示某月的第二个星期三,4 表示星期三,2 表示第二个。

特殊标识符

string meaning
@reboot Run once, at startup.
@yearly Run once a year, 0 0 1 1 *.
@annually (same as @yearly)
@monthly Run once a month, 0 0 1 * *.
@weekly Run once a week, 0 0 * * 0.
@daily Run once a day, 0 0 * * *.
@midnight (same as @daily)
@hourly Run once an hour, 0 * * * *.

crontab命令

 crontab [ -u user ] [ -i ] { -e | -l | -r }

crontab定时任务设置

*/* */* */* */* */* command
分   时  日   月  周几

参数:

  • -e 编辑某个用户的cron服务
  • -l 列出某个用户cron服务的详细内容
  • -r 删除某个用户的cron服务
  • -i 在删除之前提示
  • -u 设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

实例:

crontab -l
crontab -e
crontab -u tian -l
crontab -u tian -e
# 添加自定义的crontab文件
crontab self_crontab

crontab -r 

image
image
image
image

扩展

  • 每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。
  • cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令,因此修改配置后不需要重启cron服务。
  • cron的系统级配置文件位于/etc/crontab
  • cron服务的日志:/var/log/syslog , 方便定位错误
  • crontab设置的定时任务命令依赖环境变量,最好就带全命令路径

参考

https://www.cnblogs.com/GarrettWale/p/16256688.html
https://www.cnblogs.com/itech/archive/2011/02/09/1950226.html
https://www.bilibili.com/video/BV1Di4y1x77n/?spm_id_from=333.337.search-card.all.click&vd_source=977c17f5af97388edfe1ecf540089884