学无止境
欢迎关注我的公众号
接收定期更新文章
crontab详解
2026-01-05 15:29:11
617

 

Linux 定时任务(也称为“计划任务”)是一种在指定时间自动执行命令或脚本的机制。Linux 中最常用的定时任务工具是 cron,它通过 crontab(cron table)来配置。

1、基本概念

  • cron:Linux 系统中用于周期性执行任务的守护进程(daemon)。

  • crontab:用户用来设置 cron 任务的配置文件,每个用户可以有自己的 crontab。

2、crontab 格式

每行代表一个定时任务,格式如下:

      
1
2
3
4
5
6
7

* * * * * command #command是需要执行的命令
│ │ │ │ │
│ │ │ │ └── 星期几(0–7,0 和 7 都表示星期日)
│ │ │ └──── 月份(1–12)
│ │ └────── 日期(1–31)
│ └──────── 小时(0–23)
└────────── 分钟(0–59)

示例说明:

表达式含义
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
2
3
4
5
6
7
8
9
10
11

# 查看当前用户的定时任务
crontab -l
 
# 编辑当前用户的定时任务
crontab -e
 
# 删除当前用户的所有定时任务
crontab -r
 
# 查看某用户的定时任务(需 root 权限)
crontab -u username -l


四、注意事项

  1. 1. 环境变量问题:cron 执行时的环境变量与用户登录时不同,建议在脚本中使用绝对路径,或在 crontab 中显式设置 PATH。

          1PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  2. 2. 输出重定向:如果不重定向输出,默认会通过邮件发送给用户(如果系统配置了 mail)。建议重定向到日志文件或 /dev/null

          10 2 * * * /backup.sh >> /var/log/backup.log 2>&1
  3. 3. 权限:只有 root 用户可以编辑其他用户的 crontab;普通用户只能管理自己的任务。

  4. 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/:放入这些目录的可执行脚本会按对应周期自动运行(由 anacroncron 调用)。


六、调试技巧

  • • 查看 cron 日志(通常位于):

          
    1
    2

    tail -f /var/log/cron      # CentOS/RHEL
    tail -f /var/log/syslog    # Ubuntu/Debian(需 grep CRON)

  • • 手动测试脚本是否能正常运行:

          1bash /path/to/script.sh

如果你有具体的定时任务需求或遇到问题,也可以告诉我,我可以帮你写 crontab 表达式或排查问题。

 


Linux定时任务
cron工具
crontab配置
系统运维
欢迎关注我的公众号,获取更多文章