crontab 是于 Linux 操作系统中常见的命令操作工具,常用于设置周期性被执行的指令。命令从标准输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。
crontab 的基本使用
使用时需要注意的一点是执行脚本或者命令需要使用绝对路径,否则计划任务将无法执行。
crontab 操作前检测
crontab -l 检测 crontab 服务是否安装,如果没有安装需要自行安装。
crontab crond status 检测 crontab 服务是否启动
crontab 的格式
*(分) *(时) *(日) *(月) *(周) command
crontab 的常用命令操作
crontab -e 编辑、修改 crontab 定时任务
crontab -l 列出用户下的定时任务列表
crontab -r 删除用户下的定时任务
crontab -i 在删除用户的 d 文件时给确认提示
crontab [-u user] file 指定用户 指定文件导入定时任务
crontab [-u user] [-e|-l|-r|-i] 指定用户 指定文件导入定时任务
crontab 的简单示例
- 每天的固定时间执行服务
shell
10 12 * * * /bin/systemctl reload nginx #每天的 12 点 10 分重载 nginx 服务
- 每月的固定时间执行服务
shell
15 2 1,3,6,9 * * /bin/systemctl reload nginx #每月的 1,3,6,9 日的 2 点 15 分重载 nginx 服务
- 每月的连续天数执行服务
shell
45 2 1-10,12-15 * * /bin/systemctl reload nginx #每月的 1-10 号、12-15 号重载 nginx 服务
- 每两分钟执行任务
shell
*/2 * * * * /bin/systemctl reload nginx #没偶数分钟重载一次 nginx 服务
1-59/2 * * * * # 每奇数分钟重载一次 nginx 服务
- 固定时间内每隔一段时间执行任务
shell
0 23-7/1 * * * /bin/systemctl reload nginx # 晚上 11 点到早上 7 点之间,每隔一个小时重载 `nginx` 服务
0,30 18-23 * * * /bin/systemctl reload nginx
0-59/30 18-23 * * * /bin/systemctl reload nginx # 每天 18 点到 23 点之间 每半小时重载一次 nginx 服务
- 固定时间段内的某一特定的天
shell
59 1 1-7 4 0 test `date +\%w -eq 0`&& /bin/systemctl reload nginx # 四月的第一个星期日早晨 1 时 59 分重载 nginx 服务
- 分钟以下的定时任务
shell
0 * * * * /bin/systemctl reload nginx' && '0 * * * * sleep 30 /bin/systemctl reload nginx #每 30 秒重载一次 nginx 服务
crontab 导入文件
crontab file 导入定时任务文件,导入文件会覆盖原有的文件。
/etc/crontab 文件写入的是系统级别的定时任务。
/var/log/cron 所有的 crontab 任务日志所处的位置。
/var/spool/user 系统用户的任务信息,可以直接编辑