首页/系统/Linux 运维命令速查/汇总查看系统全部定时任务
定时任务与计划50 条

汇总查看系统全部定时任务

审计与迁移前先摸清全量任务:用户 crontab、/etc/crontab、cron.d、cron.* 目录、systemd timer 五处都要看,一条命令一把输出。

Linux 运维命令速查系统更新于 2026-10-13

全量盘点是什么

审计或迁移定时任务前,先把全量任务摸清楚:用户任务表、系统任务表、任务目录、批处理目录与定时器五大来源都要覆盖。只查用户任务表会漏掉系统级任务,迁移后容易出现重复执行或漏执行。

基本信息

用途全量盘点系统中的定时任务
覆盖范围用户任务表、系统任务表、任务目录、批处理目录、定时器
适用场景迁移、审计、机器交接
权限读取全部用户任务表需要 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 权限并过滤报错输出。
任务目录里可能有软件包安装时生成的任务,迁移前确认对应软件是否也已安装。

按现象找来源

现象先去哪里找补充线索
整点附近执行系统周期目录看脚本名与执行日志
带明确分钟表达式任务表文件注意是否有运行身份字段
任务表里找不到该任务任务目录下的独立文件看文件属主与注释
只在关机错过时缺一次定时器配置看是否允许补跑
同一时刻执行两次两处都有定义按清单去重后下线一处
盘点结果要落到清单里并标注责任人、用途与保留必要性,否则半年后同样的人还要再查一遍;迁移或下线机器时按清单逐条销账,避免新旧两台机器同时执行同一任务,造成重复推送与重复计费这类难以解释的现象。

易错点

  • 只查用户任务表会漏掉系统任务与目录里的任务,迁移后容易重复或遗漏
  • 普通用户无权列出他人任务表,脚本需以 root 运行并处理报错输出
  • 任务目录里的任务常由软件包生成,未同步安装对应软件时任务会静默失败
  • 盘点结果不归档,交接或半年后复核时又要从头再查一遍
  • 把定时器列表里的下一次触发时间当成执行记录:那只是计划时刻,是否真的跑过要看对应服务的执行历史与日志

数据来源与参考

  • man 1 crontab
  • man 1 systemctl(list-timers)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌