Linux定时任务:cron使用详解(我用了10年的经验)
我用 cron 跑了 10 年定时任务,从备份到监控,从清理到同步。这篇是我整理的最全的 cron 使用指南,新手也能学会。
一、cron 是什么?
cron 是 Linux 的定时任务服务,能让你在指定的时间自动执行脚本。
比如:
- 每天凌晨 2 点自动备份网站
- 每 10 分钟自动检查网站能不能访问
- 每周一早上 8 点自动发周报
二、怎么用 cron?
1. 查看当前定时任务
2. 编辑定时任务
第一次用会让你选编辑器,选 vim 就行。
三、cron 语法格式
记忆口诀:分 时 日 月 周
四、常用示例(直接套用)
1. 每分钟执行一次
2. 每 10 分钟执行一次
3. 每天凌晨 2 点执行
4. 每天早上 8 点 30 分执行
5. 每周一早上 8 点执行
6. 每月 1 号凌晨 3 点执行
7. 每年 1 月 1 号早上 9 点执行
五、实战:我常用的定时任务
这是我服务器上的 cron 任务:
六、进阶技巧
1. 输出重定向
cron 默认会把输出发到邮件,如果你不需要,可以重定向到 /dev/null:
2. 指定 SHELL
默认用 /bin/sh,如果你想用 bash,可以指定:
3. 指定 PATH
cron 的 PATH 很简单,很多命令找不到,最好指定:
七、踩坑提醒
- 用绝对路径:cron 的环境变量很简单,脚本里一定要用绝对路径,不然找不到命令
- 先手动跑一遍:脚本先手动跑一遍,没问题了再放到 cron 里
- 加日志:重要的脚本,加日志,出问题了能查
- 注意时区:cron 用的是服务器的时区,注意是不是对的
- 不要同时跑很多:不要把所有任务都设成同一个时间,错开一点
八、怎么调试 cron?
如果 cron 没跑,怎么调试?
- 先手动跑一遍脚本:看看脚本有没有错
- 看 cron 日志:
- 看脚本的输出:把输出重定向到文件,看看有没有报错
九、其他定时任务工具
除了 cron,还有:
- at:一次性定时任务,比如 1 小时后执行
- systemd timer:systemd 的定时任务,比 cron 更强大
- GitHub Actions:如果你只是想定时跑个脚本,用 GitHub Actions 也行,不用在自己服务器上跑
你有没有在用 cron?有没有什么常用的定时任务?欢迎在评论区分享~
- 作者:墨殇个人博客
- 链接:https://moshang.eu.org/article/3fcdeb47-39da-8137-b865-d47463d679bf
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
