在Linux系统中,crontab
是用于设置定时任务的工具。有什么用呢?像我们平时在服务器上要定期定时执行的任务,就可以交给这个crontab来干,比如定期压缩服务产生的日志文件、定期执行数据库分表、定期某些服务组件重启等。
Crontab 基本语法
每个定时任务由6个字段组成(前5个表示时间,第6个是命令):
* * * * * 要执行的命令
│ │ │ │ │
│ │ │ │ └── 星期几 (0-7,0和7都代表周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日 (1-31)
│ └──────── 小时 (0-23,24小时设置)
└────────── 分钟 (0-59)
时间字段规则
-
[*]
任意值(每分钟/每小时等)。
示例 :* * * * *
表示每分钟执行一次。 -
*/n
每隔
n
个单位执行一次。
示例 :*/5 * * * *
每5分钟执行一次。 -
a-b
时间范围(从
a
到b
)。
示例 :0 9-18 * * *
每天9点到18点整点执行。 -
a,b,c
多个离散时间点。
示例 :0 1,13 * * *
每天1点和13点执行。 -
特殊字符
@reboot
:系统启动时运行。@daily
/@hourly
:简化常见周期(等价于0 0 * * *
和0 * * * *
)。
常用示例
-
每天凌晨3点执行
0 3 * * * /path/to/script.sh
-
每周末(周日)备份
0 2 * * 7 /usr/bin/backup
-
工作日每30分钟检查
*/30 * * * 1-5 /usr/bin/check_status
-
每月1号和15号清理日志
0 0 1,15 * * /usr/bin/clean_logs
如何编辑Crontab
-
打开当前用户的crontab:
crontab -e
-
查看现有任务:
crontab -l
-
日志路径 :
执行日志通常可在
/var/log/syslog
或journalctl -u cron
查看。
注意事项
-
环境变量 :
cron任务默认无用户环境变量,建议在脚本中显式设置(如
PATH
)。 -
权限限制 :
普通用户只能编辑自己的crontab,root用户可通过
crontab -u username -e
管理其他用户。 -
路径问题 :
命令建议使用绝对路径(如
/usr/bin/python3
而非python3
)。
如果需要更复杂的调度逻辑(如依赖任务),可考虑使用 systemd timers
或第三方工具(如 anacron
)。
本文由mdnice多平台发布