Linux下的crontab定时执行任务命令
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。
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
前四行是用来配置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