Linux下的crontab定时执行任务命令

时间:2022-07-13 17:16:32

0x00 简介

在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

cron的配置文件称为“crontab”,是“cron table”的简写。

0x01 cron服务

cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

  • service crond start //启动服务
  • service crond stop //关闭服务
  • service crond restart //重启服务
  • service crond reload //重新载入配置
  • service crond status //查看服务状态

0x02 配置

cron在3个地方查找配置文件:

2.1 /var/spool/cron/

这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名。

比如tom建的crontab任务对应的文件就是/var/spool/cron/tom,一般一个用户最多只有一个crontab文件。

2.2 /etc/crontab

这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。

Linux下的crontab定时执行任务命令

MAILTO=root:当 /etc/crontab 这个档案中的例行性命令发生错误时,会将错误讯息或者是屏幕显示的讯息传给谁?

  • 由于 root 并无法再用户端收信,因此,我通常都將这个 e-mail 改成自己的账号,好让我随时了解系统的状态!

  • 01 * * * * root run-parts /etc/cron.hourly:在 #run-parts 这一行以后的命令,我们可以发现,五个数字后面接的是 root ,这一行代表的是『执行的级别为root身份』

  • 当然,你也可以将这一行改为成其他的身份!而 run-parts代表后面接的 /etc/cron.hourly 是『一个目录内(/etc/cron.hourly)的所有可执行文件』。

  • 也就是说,每个小时的01分,系统会以root身份去/etc/cron.hourly这个目录下执行所有可执行的文件!后面三行也是类似的意思!你可以到 /etc/ 底下去看看,系统本来就预设了这4个目录!你可以将每天需要执行的命令直接写到/etc/cron.daily即可。

2.3 /etc/cron.d/

这个目录用来存放任何要执行的crontab文件或脚本。

0x03 命令参数

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ] 选项 描述
e 编辑计划任务
l 列出计划任务
r 删除计划任务
i 删除之前确认
u 指明所属用户

0x04 常见用法

4.1 添加或更新crontab中的命令

crontab -e

添加或更新crontab中的命令

crontab -u username -e

默认情况下,系统会编辑当前登录用户的crontab命令集合。需要编辑其他用户的命令集合,需要使用到如上的命令

4.2 查看已设置的Crontab命令

crontab -l

查看当前系统登录用户的Crontab命令集合

crontab -u username -l

查看其他用户的Crontab命令集合

0x05 crontab文件内容分析

cat /etc/crontab

Linux下的crontab定时执行任务命令

前四行是用来配置crond任务运行的环境变量

第一行SHELL变量指定了系统要使用哪个shell,这里是bash

第二行PATH变量指定了系统执行命令的路径

第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户

如果MAILTO变量的值为空,则表示不发送任务执行信息给用户

第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。

小 结:

  • 数字的表示最好用2为阿拉伯数字显示
  • 周和日最好不要同时用
  • 定时任务要加注解
  • 可以定向到日志文件或者空文件
  • 定时任务一定是绝对路径,且目录必须存在才能出结果
  • crontab 服务一定要开启运行

0x06 参考链接

https://www.cnblogs.com/ftl1012/p/crontab.html

https://www.jianshu.com/p/3528b484302f

https://www.cnblogs.com/yanzi-meng/p/9156812.html