13.9 crontab 及定时任务文件(periodic.conf)

periodic.conf 的功能与目录结构

periodic.conf(5)arrow-up-right 文件包含了每日、每周和每月系统维护任务应如何运行的说明。periodic 是 FreeBSD 的系统维护任务框架,负责执行定期的系统维护工作,如日志轮转、安全检查等。这些任务通过 periodic 命令执行,由 cron 守护进程按预设时间表自动调用。

periodiccron 有关的配置和路径如下:

/
├── etc/
   ├── defaults/                   # 存放一些系统的默认配置文件
      └── periodic.conf           # 默认配置文件,包含所有系统默认变量和值
   ├── periodic.conf               # 系统特定的变量覆盖文件(常规覆盖,默认不存在)
   ├── periodic.conf.local         # 额外覆盖文件,用于共享或分发场景(默认不存在)
   └── periodic/                   # 基本系统的任务脚本目录
       ├── daily/                  # 每日维护任务脚本
       ├── weekly/                 # 每周维护任务脚本
       ├── monthly/                # 每月维护任务脚本
       └── security/               # 安全相关任务脚本
├── usr/
   └── local/                      # 第三方软件安装目录
       └── etc/
           └── periodic/           # 第三方应用的任务脚本目录
               ├── daily/          # 每日维护任务脚本
               ├── weekly/         # 每周维护任务脚本
               └── security/       # 安全相关任务脚本
└── var/
    └── cron/
        ├── allow                   # 允许使用 crontab 的用户列表(默认不存在)
        ├── deny                    # 禁止使用 crontab 的用户列表(默认不存在)
        └── tabs/                   # 个人 crontab 文件目录

periodic.conf(5)arrow-up-right 文件位于 /etc/defaults 目录下,其部分内容可以被 /etc 目录下同名文件覆盖,而 /etc 下的文件又可以被 /etc/periodic.conf.local 文件所覆盖。

源代码路径结构:

附录:示例分析

locate 命令所依赖的路径数据库 /var/db/locate.database 为例,该数据库由 /etc/periodic/weekly/310.locate 脚本每周自动更新一次。

如需立即更新数据库,可直接执行该脚本:

crontab: cron 配置,位于 /etc/crontab,请参考 crontab(5)arrow-up-right

课后习题

  1. 创建一个自定义 periodic 脚本放入 /usr/local/etc/periodic/daily/,配置 periodic.conf 使其运行并观察输出。

  2. 修改 /etc/crontab 中 periodic 任务的执行时间,对比修改前后的系统行为。

  3. 禁用某个默认的 periodic 任务(如 weekly 的 310.locate),追踪其如何影响 locate 命令的可用性。

最后更新于