引言

crontab 是 Linux 定时任务的核心工具。本文将详解其语法、高级用法及常见问题。


1. 基础语法与表达式

1.1 时间字段格式

*    *    *    *    *  command

|    |    |    |    |

|    |    |    |    +----- 星期几 (0-7,0/7=星期日)

|    |    |    +------- 月份 (1-12)

|    |    +--------- 日期 (1-31)

|    +----------- 小时 (0-23)

+------------- 分钟 (0-59)

1.2 常用示例

# 每小时 10 分执行

10 * * * * /path/to/script.sh

# 每周日 00:00 执行

0 0 * * 0 /backup.sh

2. 高级用法

2.1 环境变量与路径

# 在 crontab 中设置环境变量

SHELL=/bin/bash

PATH=/usr/local/sbin:/usr/local/bin

# 明确指定脚本路径

0 2 * * * /usr/local/bin/cleanup.sh

2.2 邮件通知

# 将输出发送到指定邮箱

MAILTO="admin@example.com"

3. 常见问题与调试

3.1 任务未执行

  • 检查 cron 服务状态systemctl status cron

  • 查看日志journalctl -u cron

3.2 调试技巧

# 手动执行任务

crontab -l | grep "command" | awk '{system($0)}'

4. 定时任务管理

4.1 编辑与查看

# 编辑当前用户 crontab

crontab -e

# 查看所有用户的定时任务

ls /var/spool/cron/crontabs

4.2 anacron 的补充

  • 适用场景 :非 24/7 运行的系统(如台式机)

  • 配置文件 /etc/anacrontab


总结

掌握 crontab 的表达式和环境配置是关键。通过合理设置任务、邮件通知和调试技巧,可高效管理定时任务。