FreeBSD 下用户如何使用 Cron 执行定时任务
• 2025-11-25 • 类别: 操作系统 & 服务器 • 阅读量:36
在FreeBSD系统中,同 Linux 系统中一样可以使用 Cron 执行定时任务。
Cron 系统服务管理
在 FreeBSD 中可以通过 rc 系统管理 Cron 服务,可以管理服务的启用、启动、停止、重启及查看状态。
查看 Cron 服务的运行状态
使用以下命令查看 Cron 服务是否正在运行:
service cron status
根据输出信息判断服务是否运行。
配置 Cron 开机自启动
FreeBSD默认已启用Cron服务,,无需手动配置。
当然你可以编辑/etc/rc.conf文件,添加启动项:
echo 'cron_enable="YES"' >> /etc/rc.conf
启动、停止与重启Cron服务
- 启动服务:
service cron start - 停止服务:
service cron stop - 重启服务(修改配置后生效):
service cron restart - 重新加载配置(不中断服务):
service cron reload
Cron 的配置类型
FreeBSD 中的 Cron 任务分为“系统级”和“用户级”,二者在配置路径、权限要求上都存在一定的区别。
系统级Cron
主要用于执行系统级的定时任务(如系统更新、全局日志清理等)。该 cron 任务比用户级任务多了一个“用户”字段,可以配置执行任务的用户,也是十分方便,不过需要修改系统配置文件。推荐少用。
配置的字段说明
#分 时 日 月 周 执行用户 命令
配置方式
使用root权限编辑/etc/crontab,即可配置系统级cron:
sudo vi /etc/crontab
添加类似如下的内容:
# 环境变量配置
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
# 字段说明:分 时 日 月 周 执行用户 命令
# 每小时执行一次/usr/libexec/atrun命令,示例
0 * * * * root /usr/libexec/atrun
使配置生效
执行如下命令重新加载配置,让配置生效:
service cron reload
用户级 Cron
主要用户执行用户自己的 cron 定时任务,无需特殊的权限。
注意:只有 root 用户才有自己的用户级 Cron
文件目录为:`/var/cron/tabs
文件名称:同用户名一致
示例:用户 root 的配置文件为 /var/cron/tabs/root
配置的字段说明
#分 时 日 月 周 命令
编辑方式
- 使用
crontab -e命令编辑,该命令会把此次添加的定时任务,追加到用户配置文件的后面。 - 直接编辑配置文件
Cron 字段使用解释
各字段含义与取值范围
如下给出个字段的含义及其对应的取值范围:
| 字段 | 含义 | 取值范围 | 特殊说明 |
|---|---|---|---|
| 分 | 分钟 | 0-59 | 表示每小时的第N分钟 |
| 时 | 小时 | 0-23 | 0表示凌晨,23表示晚上11点 |
| 日 | 日期 | 1-31 | 需结合月份判断合法性(如2月无30日) |
| 月 | 月份 | 1-12 或 Jan-Dec | 支持英文缩写(不区分大小写) |
| 周 | 星期 | 0-7 或 Sun-Sat | 0和7均表示周日,支持英文缩写 |
| 执行用户 | 执行命令的用户 | 系统存在的用户(如root、www) | 仅系统级crontab包含该字段 |
| 命令 | 需执行的命令或脚本 | 合法的系统命令或可执行脚本路径 | 建议使用绝对路径,避免环境变量问题 |
特殊字符的使用
Cron 任务中支持使用如下几种特殊字符:
| 特殊字符 | 含义 | 示例 |
|---|---|---|
| * | 匹配该字段的所有取值 | “分”字段为*,表示每分钟执行 |
| / | 表示“每隔N单位” | “时”字段为*/2,表示每2小时执行 |
| - | 表示连续的取值范围 | “分”字段为10-20,表示10到20分钟每分钟执行 |
| , | 表示多个不连续的取值 | “周”字段为1,3,5,表示周一、三、五执行 |
| ? | 仅用于“日”和“周”字段,避免冲突 | “日”字段为10,“周”字段为?,表示每月10日执行(忽略星期) |
结语
在本文中介绍了如何在 FreeBSD 中如何使用 Cron 添加执行定时任务,介绍了管理服务的启用、启动、停止、重启及查看状态,系统级和用户级cron,及其具体的使用方法。