centos触发器如何部署
导读: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 --all、journalctl -u hello.timer -u hello.service
- 服务单元:/etc/systemd/system/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
