在 Linux 系统中,周期性执行任务是日常运维和开发中常见的需求,而 crontab 作为系统自带的定时任务工具,能够在无需人工干预的情况下自动运行指定作业。
一、Cron 服务基础操作
crontab 依赖 cron 守护进程运行,因此首先需要熟悉 cron 服务的常用操作命令,确保服务正常运行:
# 启动 cron 服务
service crond start
# 关闭 cron 服务
service crond stop
# 重启 cron 服务
service crond restart
# 重新载入配置(修改 crontab 后无需重启服务)
service crond reload
# 查看 cron 服务状态
service crond status
二、Crontab 配置文件位置
cron 会从三个指定位置读取配置文件,不同位置对应不同的使用场景,具体如下:
- /var/spool/cron/:存放单个用户(包括 root)的 crontab 任务,文件以创建者用户名命名(如 root 用户的文件为/var/spool/cron/root),一般一个用户仅对应一个 crontab 文件。
- /etc/crontab:系统级别的 crontab 配置文件,用于安排系统管理员制定的系统维护任务,文件中包含执行用户身份、环境变量等全局配置,格式如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root # 任务执行错误时的邮件接收人
HOME=/ # 示例:每小时 01 分执行/etc/cron.hourly 目录下所有可执行文件
01 * * * * root run-parts /etc/cron.hourly
# 每天 04 点 02 分执行/etc/cron.daily 目录下所有可执行文件
02 4 * * * root run-parts /etc/cron.daily
# 每周日 04 点 22 分执行/etc/cron.weekly 目录下所有可执行文件
22 4 * * 0 root run-parts /etc/cron.weekly
# 每月 01 日 04 点 42 分执行/etc/cron.monthly 目录下所有可执行文件
42 4 1 * * root run-parts /etc/cron.monthly
- /etc/cron.d/:用于存放自定义的 crontab 文件或脚本,适合批量管理多个定时任务。
三、Crontab 权限控制规则
crontab 的使用权限由/var/adm/cron/目录下的 cron.allow和 cron.deny文件控制,具体规则如下:
- 若两个文件都不存在:仅 root 用户可使用 crontab 命令;
- 若仅存在
cron.allow:仅文件中列出的用户可使用 crontab(root 用户未列出则也无权使用); - 若仅存在
cron.deny:文件中列出的用户禁止使用 crontab,其他用户均可使用; - 若两个文件都存在:以
cron.allow为准,仅在cron.allow中且未在cron.deny中的用户可使用。
注意:AIX 系统中普通用户默认拥有 crontab 权限,限制用户需编辑 cron.deny;HP-UNIX 系统中普通用户默认无 crontab 权限,需手动放开。
四、Crontab 表达式格式详解
crontab 文件中每行对应一个定时任务,格式由 6 个字段组成(系统级配置 /etc/crontab多一个'执行用户'字段),字段含义如下:

