2026-01-05 15:29:11
617
Linux 定时任务(也称为“计划任务”)是一种在指定时间自动执行命令或脚本的机制。Linux 中最常用的定时任务工具是 cron,它通过 crontab(cron table)来配置。
• cron:Linux 系统中用于周期性执行任务的守护进程(daemon)。
• crontab:用户用来设置 cron 任务的配置文件,每个用户可以有自己的 crontab。
每行代表一个定时任务,格式如下:
| 表达式 | 含义 |
|---|---|
30 1 * * * /backupDb.sh | 每天凌晨 1:30 执行 /backupDb.sh |
*/1 * * * * /checkOrder.sh | 每分钟执行一次 /checkOrder.sh |
0 0 2 * * /clearInteger.sh | 每月2号00:00执行 /clearInteger.sh |
0 0 * * 0 /weekly.sh | 每周日 00:00 执行 /weekly.sh |
1. 环境变量问题:cron 执行时的环境变量与用户登录时不同,建议在脚本中使用绝对路径,或在 crontab 中显式设置 PATH。
1PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
2. 输出重定向:如果不重定向输出,默认会通过邮件发送给用户(如果系统配置了 mail)。建议重定向到日志文件或 /dev/null:
10 2 * * * /backup.sh >> /var/log/backup.log 2>&1
3. 权限:只有 root 用户可以编辑其他用户的 crontab;普通用户只能管理自己的任务。
4. 特殊符号:
• *:任意值
• ,:枚举,如 1,3,5
• -:范围,如 1-5
• */n:每 n 个单位,如 */5 表示每 5 分钟
除了用户级 crontab,系统还有全局的定时任务配置文件:
• /etc/crontab:系统级 crontab,格式多一列(指定运行用户):
1* * * * * user command
• /etc/cron.d/:存放额外的系统级 cron 任务文件。
• /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/:放入这些目录的可执行脚本会按对应周期自动运行(由 anacron 或 cron 调用)。
• 查看 cron 日志(通常位于):
• 手动测试脚本是否能正常运行:
1bash /path/to/script.sh
如果你有具体的定时任务需求或遇到问题,也可以告诉我,我可以帮你写 crontab 表达式或排查问题。