温馨提示×

如何使用CentOS Trigger

小樊
44
2025-11-16 01:18:48
栏目: 智能运维

概念澄清CentOS 环境中,大家口中的“Trigger”通常有三种不同含义:一是某些教程里提到的第三方命令行工具 centos-trigger(用于按间隔执行脚本);二是 yum/dnf 的触发器机制(包安装、更新、删除时自动执行脚本);三是 systemd 的定时器/事件触发(在特定时间或单元状态变化时执行服务)。下面分别给出可操作的使用方法。

方案一 使用 centos-trigger 管理定时任务

  • 适用场景:希望通过简单命令按固定间隔运行脚本或程序。
  • 安装与基础用法(以 CentOS 7 为例,需 EPEL):
    • 安装
      • sudo yum install -y epel-release
      • sudo yum install -y centos-trigger
    • 创建任务(每隔 3600 秒执行脚本)
      • sudo ct-create --name my_task --interval 3600 --command “/path/to/my_script.sh”
    • 常用命令
      • 查看:sudo ct-list
      • 启动:sudo ct-start my_task
      • 停止:sudo ct-stop my_task
      • 删除:sudo ct-delete my_task
      • 日志:sudo ct-log my_task
  • 说明
    • 该工具并非 CentOS 官方标准组件,命令与选项可能随版本变化;使用前建议先查阅工具自带帮助或文档。若系统提示找不到命令,请确认仓库与安装是否成功。

方案二 使用 yum 或 dnf 的触发器

  • 适用场景:在包被安装、更新或删除时自动执行自定义脚本(如清理、迁移、通知)。
  • 基本用法
    • 安装/更新/删除包时,包管理器会自动执行与该包关联的触发器;无需额外命令。
      • sudo yum install <package_name>
      • sudo yum update <package_name>
      • sudo yum remove <package_name>
      • 或使用 dnf 的同名命令
  • 自定义触发器(示例)
    • 安装插件(如可用):sudo yum install -y yum-plugin-trigger
    • 配置触发器规则(示例路径与内容)
      • /etc/yum/pluginconf.d/trigger.conf
        • [main]
          • enabled=1
        • [trigger]
          • name=example_trigger
          • command=/path/to/your/script.sh
    • 注意:自定义触发器可能影响系统安全与稳定性,务必充分测试并限制脚本权限。

方案三 使用 systemd 定时器与事件触发

  • 适用场景:需要基于时间(如开机后、每小时)或系统事件(服务激活/停用)执行任务,并与 systemd 生态深度集成。
  • 步骤
    • 创建服务单元(定义要执行的任务)
      • /etc/systemd/system/my_service.service
        • [Unit]
          • Description=My Custom Service
          • After=network.target
        • [Service]
          • ExecStart=/usr/bin/my_service_executable
          • Restart=on-failure
        • [Install]
          • WantedBy=multi-user.target
    • 创建定时器单元(按时间触发)
      • /etc/systemd/system/my_service.timer
        • [Unit]
          • Description=Run My Service Timer
        • [Timer]
          • OnBootSec=5min
          • OnUnitActiveSec=1h
          • Persistent=true
        • [Install]
          • WantedBy=timers.target
    • 启用与启动
      • sudo systemctl daemon-reload
      • sudo systemctl enable --now my_service.timer
    • 验证与日志
      • 查看定时器:systemctl list-timers --all
      • 查看日志:journalctl -u my_service.timer
  • 说明
    • 这是 systemd 的标准做法,稳定可靠;适合替代传统的 cron 场景,并能与依赖关系、日志、重启策略等原生集成。

如何选择

  • 需要“每隔 N 秒/分/小时执行脚本”:优先用 centos-trigger(若可用);更通用、系统原生的是 systemd 定时器cron
  • 需要在“安装/更新/删除软件包时自动执行动作”:使用 yum/dnf 触发器 或相应插件。
  • 需要“开机后延迟执行、按固定周期执行、与系统服务联动”:使用 systemd 定时器

0