CentOS 中“触发器”的常见场景与配置位置
在 CentOS 里,“触发器”通常对应三类场景:系统级的事件触发(systemd 定时器/一次性任务)、时间周期任务(cron/anacron)、监控告警规则(如 Zabbix 触发器)。下面给出各类场景的配置入口与关键文件位置。
一、systemd 事件触发与定时器
- 配置目录与文件:在 /etc/systemd/system/ 下创建单元文件,常见为 .service(任务)与 .timer(定时器)。例如:my_task.service、my_task.timer。
- 常用指令:
- 重新加载配置:systemctl daemon-reload
- 启用并启动定时器:systemctl enable --now my_task.timer
- 查看定时器:systemctl list-timers --all
- 查看日志:journalctl -u my_task.timer
- 典型用途:替代“开机后延迟执行”“每隔一段时间执行”“仅执行一次”的需求(比一次性 crontab 更直观)。示例做法与目录位置见 systemd 定时器的标准用法。
二、时间周期任务 cron 与 anacron
- 配置文件与目录:
- 系统级:/etc/crontab(全局时间表)、/etc/cron.d/(系统级任务片段)
- 用户级:每个用户的任务保存在 /var/spool/cron/(以用户名命名),通过 crontab -e 编辑
- 周期目录:/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/(由 run-parts 执行)
- 缺省执行安排(示例):01 * * * * root run-parts /etc/cron.hourly;02 4 * * * root run-parts /etc/cron.daily;22 4 * * 0 root run-parts /etc/cron.weekly;42 4 1 * * root run-parts /etc/cron.monthly
- 服务与权限:
- 服务管理:systemctl start|stop|restart|status crond(CentOS 7 常用)
- 访问控制:可能存在 /etc/cron.allow 与 /etc/cron.deny 用于限制用户使用 crontab
- 适用说明:cron 假定主机 7×24 运行;若关机错过执行,可用 anacron 补齐(通过 /etc/anacrontab 配置)。
三、监控告警触发器 Zabbix
- 配置入口:在 Zabbix Web 前端 的“配置 → 主机 → 监控项 → 触发器”中定义表达式(如用户登录数阈值),并配置“动作”(邮件、企业微信、钉钉等媒介脚本)。
- 客户端侧常用配置:在 /etc/zabbix/zabbix_agent2.conf 启用自定义键值(如 UnsafeUserParameters=1),在 /etc/zabbix/zabbix_agent2.d/*.conf 定义 UserParameter,重启 zabbix-agent2 后用 zabbix_agent2 -t key 或 zabbix_get 测试。
四、数据库触发器 MySQL 示例
- 配置位置:在具体的数据库内,用 SQL 定义触发器,而非系统文件。例如创建 BEFORE INSERT 触发器自动设置字段值:
- 示例:
- DELIMITER //
- CREATE TRIGGER before_insert_user BEFORE INSERT ON users FOR EACH ROW BEGIN SET NEW.status = ‘active’; END//
- DELIMITER ;
- 适用说明:这类“触发器”属于数据库对象,使用 mysql 客户端在目标库内执行 DDL 即可。