Linux Crontab语法基础教程
导读:Linux Crontab语法基础教程 一、Crontab概述 Crontab(Cron Table)是Linux系统中用于周期性执行定时任务的核心工具,通过crond(Cron守护进程)监听并执行预设任务。它广泛应用于日志清理、数据备份、...
Linux Crontab语法基础教程
一、Crontab概述
Crontab(Cron Table)是Linux系统中用于周期性执行定时任务的核心工具,通过crond
(Cron守护进程)监听并执行预设任务。它广泛应用于日志清理、数据备份、脚本运行等场景,支持用户级和系统级任务配置。
二、Crontab基本语法结构
Crontab的每条任务由6个字段组成(部分系统支持@
特殊字符串简化),格式如下:
* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └─── 星期(0-7,0和7均代表周日)
│ │ │ └───── 月份(1-12)
│ │ └─────── 日(1-31)
│ └───────── 小时(0-23)
└─────────── 分钟(0-59)
- 前5个字段:定义任务执行的时间条件,每个字段可包含特殊字符(如
*
、,
、-
、/
),用于灵活设置时间间隔。 - 命令字段:需指定要执行的绝对路径(如
/usr/bin/ls
而非ls
),避免因cron环境变量缺失导致任务失败。
三、时间字段详解
1. 各字段取值范围
字段 | 取值范围 | 说明 |
---|---|---|
分钟 | 0-59 | 每分钟的刻度 |
小时 | 0-23 | 24小时制 |
日(月份中) | 1-31 | 需注意月份的实际天数 |
月 | 1-12 | 或使用英文缩写(如Jan) |
星期 | 0-7(0和7均代表周日) | 或使用英文缩写(如Sun) |
2. 特殊字符及用法
*
:匹配所有可能值(如* * * * *
表示每分钟执行)。,
:分隔多个离散值(如1,15,30 * * * *
表示每小时的第1、15、30分钟执行)。-
:指定连续范围(如8-17 * * * *
表示每天8点到17点每小时执行)。/
:设置间隔频率(如*/5 * * * *
表示每5分钟执行一次,等价于0,5,10,...,55 * * * *
)。
四、常用特殊字符串
为简化时间配置,Crontab支持以下预定义特殊字符串(替代前5个时间字段):
字符串 | 含义 | 等效时间表达式 |
---|---|---|
@reboot |
系统启动时执行一次 | — |
@yearly |
每年执行一次 | 0 0 1 1 * |
@annually |
同@yearly |
0 0 1 1 * |
@monthly |
每月执行一次 | 0 0 1 * * |
@weekly |
每周执行一次 | 0 0 * * 0 |
@daily |
每天执行一次 | 0 0 * * * |
@midnight |
同@daily |
0 0 * * * |
@hourly |
每小时执行一次 | 0 * * * * |
示例:@daily /usr/bin/clear_temp
表示每天午夜清空临时文件。
五、Crontab常用命令
1. 编辑当前用户的crontab
crontab -e
执行后会打开默认编辑器(如vi/nano),添加或修改任务后保存即可生效。
2. 查看当前用户的crontab
crontab -l
列出当前用户所有的定时任务。
3. 删除当前用户的crontab
crontab -r
注意:此操作会删除所有任务,无确认提示。若需确认,可添加-i
参数(crontab -i -r
)。
4. 编辑指定用户的crontab(需root权限)
crontab -u username -e
例如,编辑tom
用户的crontab:sudo crontab -u tom -e
。
六、注意事项
- 绝对路径:命令或脚本必须使用绝对路径(如
/home/user/backup.sh
),避免因cron环境变量(如PATH
)不同导致找不到命令。 - 环境变量:cron默认不加载用户的环境变量(如
$HOME
、$PATH
),若任务依赖环境变量,需在命令前显式设置(如在脚本开头添加export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
)。 - 权限问题:普通用户只能管理自己的crontab任务,系统级任务需root权限编辑
/etc/crontab
或/etc/cron.d/
下的文件。 - 输出重定向:cron任务的输出(包括错误)默认发送给用户邮件,可通过重定向到文件避免丢失(如
/path/to/command > /tmp/log.txt 2> & 1
)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Crontab语法基础教程
本文地址: https://pptw.com/jishu/727744.html