什么是 Cron 任务?如何设置?Linux 计划任务指南
用 cron 在 Linux 上自动备份、清理日志、运行脚本。Crontab 语法、示例与常见坑。
KavesNET 团队 2026年1月15日 3 分钟阅读
想要每晚自动备份、每周清理日志、或每 5 分钟做一次健康检查?Cron 是 Linux 的标准工具。本文涵盖 crontab 语法、实用示例与常见坑。
什么是 cron?
Cron 是 Linux 守护进程,按计划时间运行命令。每分钟读 crontab 文件,触发到点的命令。
Crontab 语法
一行 cron:5 个时间字段 + 命令:
* * * * * 命令
│ │ │ │ │
│ │ │ │ └── 星期几 (0-7,0 和 7 = 周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 一个月中第几天 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)
实用示例
| 表达式 | 含义 |
|---|---|
* * * * * | 每分钟 |
*/5 * * * * | 每 5 分钟 |
0 * * * * | 每小时整点 |
0 3 * * * | 每天 03:00 |
0 3 * * 1 | 周一 03:00 |
0 3 1 * * | 每月 1 日 03:00 |
30 2 * * 1-5 | 工作日 02:30 |
@reboot | 服务器启动时 |
@daily | 每天 00:00 |
@weekly | 周日 00:00 |
测试复杂表达式:crontab.guru
编辑 crontab
crontab -e # 当前用户
sudo crontab -e # root
crontab -l # 列出
crontab -r # 删除全部(小心!)
首次会让你选编辑器——nano(简单)或 vim。
实用示例
每晚备份
0 3 * * * /usr/local/bin/backup-wp.sh >> /var/log/backup.log 2>&1
每小时清理日志
0 * * * * find /var/log/myapp -name "*.log" -mtime +30 -delete
每 5 分钟健康检查
*/5 * * * * curl -s -o /dev/null -w "%{http_code}" https://你的-站点.com >> /var/log/health.log
数据库备份
30 2 * * * mysqldump -u root -p'密码' 数据库 | gzip > /backup/db-$(date +\%Y\%m\%d).sql.gz
⚠️ % 在 crontab 是特殊字符——用 \% 转义。
证书续期
0 4 * * * certbot renew --quiet && systemctl reload nginx
SSL 详情见我们的 Let’s Encrypt 文章。
如何验证 cron 跑了?
sudo systemctl status cron
sudo tail -f /var/log/syslog | grep CRON
sudo tail -f /var/log/cron
测试时——计划在 1-2 分钟后,观察日志。
常见坑
- Cron 没跑:用绝对路径写命令(
/usr/bin/php,不是单纯php) - 没有环境变量:cron 环境精简 → 在脚本顶部设
PATH= - 忘记
%:date +%Y%m%d在 cron 里坏 →\% - 看不到输出:没配 mail 时 STDOUT 丢失 →
>> log 2>&1 - PHP/Node 脚本超时:作为 CLI 跑,不受 Web 超时约束——但长脚本放后台
- 时区:UTC 服务器时间会偏 →
sudo timedatectl set-timezone Asia/Shanghai
systemd 计时器替代(现代)
systemd timers 比 cron 更现代,日志集成更好:
/etc/systemd/system/backup.service:
[Unit]
Description=Daily backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-wp.sh
/etc/systemd/system/backup.timer:
[Unit]
Description=Daily backup timer
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now backup.timer
sudo systemctl list-timers
结论
Cron 是服务器自动化的基础。5 分钟学会,每天用。 备份、清理、监控——全靠 cron。
相关:服务器备份 · Linux 磁盘扩容
标签 Linux Cron 自动化 教程
相关 文章
您可能也喜欢这些。
2026年8月7日 KavesNET 团队
什么是 NVMe SSD?它对服务器性能的影响(对比 SATA SSD)
什么是 NVMe?它与 SATA SSD 有何区别?用 IOPS、延迟与真实数据说明 NVMe 为何已成为服务器标准。
阅读更多
2026年7月31日 KavesNET 团队
什么是独立服务器(Dedicated Server)?谁真正需要它?
什么是独立服务器?它与 VDS 有何区别、何时必须使用?优势、成本与服务器托管(co-location)替代方案,尽在本指南。
阅读更多
2026年7月24日 KavesNET 团队
VDS 租用指南:下单前必查的 10 项标准
从 CPU 型号到磁盘类型,从 DDoS 防护到备份——租用 VDS 前必须核实的 10 项标准,逐条讲解。别选错套餐。
阅读更多