Linux实战:精通 Crontab 任务调度 (RHCSA & DevOps)
Source: Dev.to
引言
任务自动化是每位 Linux 系统管理员的核心职责。无论是执行夜间备份、轮转日志、生成报告,还是触发 DevOps 工作流,cron 调度器 都提供了一种可靠且灵活的方式来运行周期性任务。
本文提供了一份完整、符合 RHCSA 要求的 crontab 使用指南,结合真实的业务场景和实用示例,帮助你立即上手。
什么是 Cron 与 Crontab?
cron 是 Linux 内置的调度程序,用于在特定时间间隔运行命令或脚本。定义计划任务的配置文件称为 crontab。
Cron 适用于:
- 自动化系统维护
- 备份与清理任务
- 日志轮转与报告
- 定时数据传输
- 合规作业与监控
Cron 通过无需人工干预来自动执行重复任务,从而提升一致性和可靠性。
Cron 语法说明
每条 cron 条目由 五个时间字段 加上要执行的命令组成:
MIN HOUR DOM MON DOW CMD
重要提示: 在编辑器中,字段之间必须使用 TAB 键分隔,不能 用空格键。
字段含义
| 字段 | 描述 | 取值范围 |
|---|---|---|
| MIN | 分钟 | 0–59 |
| HOUR | 小时 | 0–23 |
| DOM | 月份中的日期 | 1–31 |
| MON | 月份 | 1–12 |
| DOW | 星期几 | 0–6 (Sun=0, Mon=1 … Sat=6) |
| CMD | 要执行的命令 | — |
管理 Cron 服务
检查 cron 服务是否在运行:
systemctl status crond
设置 cron 服务随系统启动:
systemctl enable crond
重启 cron 服务:
systemctl restart crond
用户 Crontab 与任务调度
每个用户都可以拥有自己的 crontab。
以特定用户身份编辑 crontab
crontab -e -u username
示例:为用户 natasha 安排在 6 月 15 日 14:23 打印信息的任务
su natasha
crontab -e
在编辑器中添加:
23 14 15 06 * /usr/bin/echo hello
按 ESC,然后输入 :wq 保存。
验证:
crontab -l -u natasha
Cron 表达式示例
-
每分钟一次
* * * * * /usr/bin/echo "Running every minute" -
每 5 分钟一次
*/5 * * * * /usr/bin/date >> /tmp/every5min.log -
在前 10 分钟内每 2 分钟一次
0-10/2 * * * * /usr/bin/echo "Running every 2 mins for first 10 mins" -
每天两次,分别在 1:00 AM 和 11:00 AM
0 1,11 * * * /usr/bin/echo "Twice a day task" -
仅工作日,在 9 AM–6 PM 之间
0 9-18 * * 1-5 /usr/bin/echo "Weekday work hours task"
特殊 Cron 关键字
有些调度不需要完整的五个字段。Cron 提供了便利的快捷方式:
| 关键字 | 等价调度 |
|---|---|
@yearly / @annually | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@daily / @midnight | 0 0 * * * |
@hourly | 0 * * * * |
@weekly | 0 0 * * 0 |
@reboot | 系统启动后运行一次 |
示例:在每年 1 月 1 日 00:00 运行脚本,发送新年系统状态报告
@yearly /usr/bin/echo "Happy New Year! System status report triggered." >> /var/log/newyear.log
同时运行多个任务
可以在同一用户的 crontab 中安排多行任务:
# 每天 14:23 运行一次
23 14 * * * /usr/bin/echo hello
# 每 5 分钟运行一次
*/5 * * * * /usr/bin/date >> /home/natasha/data.log
# 每周日午夜运行一次
0 0 * * 0 /usr/bin/echo hiyaa
真实业务案例
场景:零售企业的自动化报告与合规
一家零售公司需要每日将销售、库存快照以及错误日志自动发送给分析团队。
使用 crontab:
- 夜间库存导出在 23:59 执行。
- 合规日志归档每 6 小时 执行一次。
- 备份脚本每天 02:00 执行。
59 23 * * * /usr/local/bin/export_inventory.sh
0 */6 * * * /usr/local/bin/archive_logs.sh
0 2 * * * /usr/local/bin/db_backup.sh
业务影响
- 减少 IT 与运营团队的手工工作量
- 确保合规报告始终准时生成
- 通过自动备份防止数据丢失
- 通过消除人为错误提升准确性
Cron 任务成为公司 自动化骨干 的一部分,支撑 DevOps 工作流、审计以及运营可靠性。
结论
Crontab 是 Linux 中最强大的自动化工具之一。只要掌握了 cron 语法、服务管理、调度模式以及真实业务场景,你就能在 Linux 系统上自动化几乎所有重复性任务。
练习本文示例,构建自己的自动化流程,并将 cron 融入 RHCSA 考试准备和 DevOps 项目中。