首页主机资讯centos触发器如何部署

centos触发器如何部署

时间2025-12-16 02:55:04发布访客分类主机资讯浏览557
导读:CentOS 触发器的常见实现与部署 在 CentOS 环境中,“触发器”通常对应以下几类需求:按时间周期执行(定时)、按系统事件执行(systemd 定时器/一次性任务)、按文件变化执行(inotify)、按数据库操作执行(数据库触发器)...

CentOS 触发器的常见实现与部署

CentOS 环境中,“触发器”通常对应以下几类需求:按时间周期执行(定时)、按系统事件执行(systemd 定时器/一次性任务)、按文件变化执行(inotify)、按数据库操作执行(数据库触发器)、以及外部系统触发的 CI/CD 流水线(如 Jenkins 的远程构建触发)。下面给出可直接落地的部署方法与要点。

一 定时触发 Cron 部署

  • 安装与启动
    • 安装组件:yum install -y cronie yum-cron
    • 启动与开机自启:systemctl start crond & & systemctl enable crond
  • 编辑任务
    • 当前用户:crontab -e
    • 系统级:/etc/crontab(需在命令前指定运行用户)
  • 时间格式
    • 5 字段:分 时 日 月 周;示例:每天 02:30 执行 → 30 2 * * * /usr/local/bin/backup.sh
  • 常用管理
    • 查看:crontab -l;删除:crontab -r;指定用户:crontab -u app -l
  • 日志与排错
    • 查看执行日志:/var/log/cron
    • 常见问题:脚本与路径使用绝对路径、设置 SHELL/PATH、脚本具备可执行权限、必要时在命令前显式调用 /bin/bash

二 系统事件触发 systemd 定时器与一次性任务

  • 场景 A:周期性任务(替代部分 cron)
    • 服务单元:/etc/systemd/system/hello.service
      [Unit]
      Description=Hello Job
      After=network.target
      
      [Service]
      Type=oneshot
      ExecStart=/usr/local/bin/hello.sh
      
    • 定时器单元:/etc/systemd/system/hello.timer
      [Unit]
      Description=Run hello.service every 5 minutes
      Requires=hello.service
      
      [Timer]
      OnBootSec=5min
      OnUnitActiveSec=5min
      Persistent=true
      
      [Install]
      WantedBy=timers.target
      
    • 启用与启动:systemctl daemon-reload & & systemctl enable --now hello.timer
    • 查看与日志:systemctl list-timers --alljournalctl -u hello.timer -u hello.service
  • 场景 B:一次性延时任务
    • 延时 1 分钟执行:systemd-run --on-active=1min /usr/local/bin/one_time.sh
  • 说明
    • systemd 定时器具备精确计时、持久化、依赖管理等优势,适合与系统服务编排深度集成。

三 文件变化触发 inotify 部署

  • 安装工具
    • yum install -y inotify-tools
  • 守护脚本示例(监控目录创建/修改/删除并触发处理脚本)
    #!/usr/bin/env bash
    WATCH_DIR="/data/incoming"
    LOG="/var/log/inotify.log"
    
    inotifywait -m -e create,modify,delete,move --format '%w%f %e' "$WATCH_DIR" | while IFS= read -r file event;
         do
        echo "$(date '+%F %T') $event $file" >
        >
         "$LOG"
        /usr/local/bin/handle.sh "$file" "$event"
    done
    
  • 部署要点
    • 将脚本加入 systemd 管理并设置 Restart=always,确保常驻运行
    • 处理脚本使用绝对路径、做好幂等异常日志,避免事件洪泛。

四 数据库触发器部署 MySQL 示例

  • 适用场景:在 INSERT/UPDATE/DELETE 时自动执行逻辑(如填充字段、审计)
  • 示例:插入前将 status 设为 active
    DELIMITER //
    CREATE TRIGGER before_insert_user
    BEFORE INSERT ON users
    FOR EACH ROW
    BEGIN
        SET NEW.status = 'active';
        
    END;
        
    //
    DELIMITER ;
        
    
  • 运维提示
    • 触发器逻辑应尽量轻量,避免长事务与递归触发
    • 变更前做好备份回滚方案,变更后在测试环境充分验证。

五 CI/CD 外部触发 Jenkins 远程构建

  • 令牌触发
    • 构建 URL:JENKINS_URL/job//build?token=
    • 示例:http://192.168.174.30:8080/jenkins/job/text1/build?token=123
  • 定时构建
    • 使用 Cron 语法在 Jenkins 任务中配置定时(与系统 crontab 语法相近)
  • GitLab Webhooks
    • 在 GitLab 项目设置 Webhooks,指向 Jenkins 的 Build when a change is pushed to GitLab 触发器
    • 需允许本地网络出站请求(管理员设置),并在 Jenkins 系统配置中启用相关插件与安全策略
  • 适用场景
    • 代码推送、合并请求、定时流水线、跨项目构建联动等自动化流程。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos触发器如何部署
本文地址: https://pptw.com/jishu/772408.html
centos中trigger的日志 centos如何自定义trigger

游客 回复需填写必要信息