linux

Linux Crontab语法基础教程

小樊
48
2025-10-16 05:12:12
栏目: 智能运维

Linux Crontab语法基础教程

一、Crontab概述

Crontab(Cron Table)是Linux系统中用于周期性执行定时任务的核心工具,通过crond(Cron守护进程)监听并执行预设任务。它广泛应用于日志清理、数据备份、脚本运行等场景,支持用户级和系统级任务配置。

二、Crontab基本语法结构

Crontab的每条任务由6个字段组成(部分系统支持@特殊字符串简化),格式如下:

* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └─── 星期(0-7,0和7均代表周日)
│ │ │ └───── 月份(1-12)
│ │ └─────── 日(1-31)
│ └───────── 小时(0-23)
└─────────── 分钟(0-59)

三、时间字段详解

1. 各字段取值范围

字段 取值范围 说明
分钟 0-59 每分钟的刻度
小时 0-23 24小时制
日(月份中) 1-31 需注意月份的实际天数
1-12 或使用英文缩写(如Jan)
星期 0-7(0和7均代表周日) 或使用英文缩写(如Sun)

2. 特殊字符及用法

四、常用特殊字符串

为简化时间配置,Crontab支持以下预定义特殊字符串(替代前5个时间字段):

字符串 含义 等效时间表达式
@reboot 系统启动时执行一次
@yearly 每年执行一次 0 0 1 1 *
@annually @yearly 0 0 1 1 *
@monthly 每月执行一次 0 0 1 * *
@weekly 每周执行一次 0 0 * * 0
@daily 每天执行一次 0 0 * * *
@midnight @daily 0 0 * * *
@hourly 每小时执行一次 0 * * * *

示例:@daily /usr/bin/clear_temp表示每天午夜清空临时文件。

五、Crontab常用命令

1. 编辑当前用户的crontab

crontab -e

执行后会打开默认编辑器(如vi/nano),添加或修改任务后保存即可生效。

2. 查看当前用户的crontab

crontab -l

列出当前用户所有的定时任务。

3. 删除当前用户的crontab

crontab -r

注意:此操作会删除所有任务,无确认提示。若需确认,可添加-i参数(crontab -i -r)。

4. 编辑指定用户的crontab(需root权限)

crontab -u username -e

例如,编辑tom用户的crontab:sudo crontab -u tom -e

六、注意事项

  1. 绝对路径:命令或脚本必须使用绝对路径(如/home/user/backup.sh),避免因cron环境变量(如PATH)不同导致找不到命令。
  2. 环境变量:cron默认不加载用户的环境变量(如$HOME$PATH),若任务依赖环境变量,需在命令前显式设置(如在脚本开头添加export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)。
  3. 权限问题:普通用户只能管理自己的crontab任务,系统级任务需root权限编辑/etc/crontab/etc/cron.d/下的文件。
  4. 输出重定向:cron任务的输出(包括错误)默认发送给用户邮件,可通过重定向到文件避免丢失(如/path/to/command > /tmp/log.txt 2>&1)。

0
看了该问题的人还看了