温馨提示×

linux trigger和cron区别

小樊
44
2026-09-17 20:38:07
栏目: 智能运维

在 Linux 环境下,trigger(触发器)cron 都是用来“在某个条件下执行任务”的机制,但概念层级、使用场景和触发方式有明显区别。下面从多个角度对比说明。


一、基本概念

1. cron(定时任务)

cron 是 Linux 中的定时调度工具,用于在指定时间周期性地执行命令或脚本

  • 基于 时间
  • 配置方式:crontab
  • 典型用途:每天备份、每小时清理日志

示例:

0 2 * * * /backup.sh

每天凌晨 2 点执行 backup.sh


2. trigger(触发器)

trigger 不是 Linux 自带的某个具体工具,而是一个通用概念,表示:

当某个事件发生时,自动触发某个动作

常见 Linux 中的 trigger 场景:

  • systemd service / path / timer trigger
  • udev trigger(设备插拔)
  • inotify trigger(文件变化)
  • 数据库 trigger(如 MySQL)
  • CI/CD pipeline trigger

示例(systemd path trigger):

[Path]
PathChanged=/data/input.txt

[Install]
WantedBy=multi-user.target

/data/input.txt 改变时,触发对应 service


二、核心区别对比

对比项 cron trigger
触发依据 时间(周期) 事件(状态/动作)
是否实时 否(最小粒度通常为分钟) 是(事件一旦发生立即触发)
是否周期性 不一定
典型工具 crontab, crond systemd, inotify, udev
适用场景 定时任务 条件驱动任务
灵活性

三、典型使用场景对比

使用 cron 的场景

  • 每天凌晨跑报表
  • 每周清理临时文件
  • 每 5 分钟检查服务状态

使用 trigger 的场景

  • 文件一出现就处理(inotify)
  • U 盘插入就挂载(udev)
  • 服务崩溃自动重启(systemd)
  • Git push 就部署(CI trigger)

四、systemd 中 cron 与 trigger 的关系

在现代 Linux(systemd 系统)中:

  • cron ≈ systemd timer
  • trigger ≈ systemd path / socket / service

示例:

# cron 风格
systemd timer

# trigger 风格
systemd path / socket

五、一句话总结

cron 是“时间到了就执行”,trigger 是“事情发生了就执行”。

如果你有具体使用场景(比如:备份、文件监控、服务重启),我可以给你更合适的方案。

0