全量盘点是什么
审计或迁移定时任务前,先把全量任务摸清楚:用户任务表、系统任务表、任务目录、批处理目录与定时器五大来源都要覆盖。只查用户任务表会漏掉系统级任务,迁移后容易出现重复执行或漏执行。
基本信息
| 用途 | 全量盘点系统中的定时任务 |
|---|---|
| 覆盖范围 | 用户任务表、系统任务表、任务目录、批处理目录、定时器 |
| 适用场景 | 迁移、审计、机器交接 |
| 权限 | 读取全部用户任务表需要 root |
典型使用场景
- 机器交接:把任务清单归档,作为交接材料的一部分
- 迁移改造:逐条登记任务归属、执行时间与作用,避免漏搬
- 安全审计:排查是否存在来历不明的任务
- 排障定位:某个操作被反复触发时找出是哪个任务在跑
- 容量核对:统计任务数量与执行密度,评估资源压力
一条命令盘点
一条命令盘点
echo '== 用户任务表 =='; for u in $(cut -d: -f1 /etc/passwd); do crontab -u $u -l 2>/dev/null && echo "-- $u --"; done
echo '== 系统任务表 =='; cat /etc/crontab
echo '== 任务目录 =='; ls -l /etc/cron.d/; cat /etc/cron.d/* 2>/dev/null
echo '== 批处理目录 =='; ls /etc/cron.{hourly,daily,weekly,monthly}/ 2>/dev/null
echo '== 定时器 =='; systemctl list-timers --all --no-pager | head -n 30只看有效行
只看有效行
grep -vE '^\s*(#|$)' /etc/crontab /etc/cron.d/* 2>/dev/null
ls /etc/cron.{hourly,daily,weekly,monthly}/ 2>/dev/null五类来源
| 来源 | 位置 | 特点 |
|---|---|---|
| 用户任务表 | 每个账号一份 | 与用户权限绑定 |
| 系统任务表 | 系统路径下的任务表 | 含运行身份字段 |
| 任务目录 | 目录下的独立文件 | 每个文件一个任务,便于分发 |
| 批处理目录 | 四个周期目录 | 按命名规则批量执行 |
| 定时器 | systemd 单元 | 支持依赖关系与补跑 |
迁移到新机器时把上述输出归档成清单,逐条验证后再下线旧机任务,避免两边同时执行。
普通用户列出他人的任务表会报错,盘点脚本需要 root 权限并过滤报错输出。
任务目录里可能有软件包安装时生成的任务,迁移前确认对应软件是否也已安装。
按现象找来源
| 现象 | 先去哪里找 | 补充线索 |
|---|---|---|
| 整点附近执行 | 系统周期目录 | 看脚本名与执行日志 |
| 带明确分钟表达式 | 任务表文件 | 注意是否有运行身份字段 |
| 任务表里找不到该任务 | 任务目录下的独立文件 | 看文件属主与注释 |
| 只在关机错过时缺一次 | 定时器配置 | 看是否允许补跑 |
| 同一时刻执行两次 | 两处都有定义 | 按清单去重后下线一处 |
盘点结果要落到清单里并标注责任人、用途与保留必要性,否则半年后同样的人还要再查一遍;迁移或下线机器时按清单逐条销账,避免新旧两台机器同时执行同一任务,造成重复推送与重复计费这类难以解释的现象。