CentOS 触发器使用技巧
一 常见类型与适用场景
二 时间触发器的实用技巧
[Unit]
Description=Daily Backup
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
[Unit]
Description=Run backup daily at 02:00
Requires=daily_backup.service
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now daily_backup.timer
systemctl list-timers --all
journalctl -u daily_backup.timer -u daily_backup.service
三 事件与文件触发的实用技巧
sudo yum install -y inotify-tools
#!/usr/bin/env bash
WATCH_DIR="/var/www/html"
LOG="/var/log/file_trigger.log"
inotifywait -m -e create,modify,delete,move --format '%w%f %e' "$WATCH_DIR" | while IFS= read -r file action; do
echo "$(date '+%F %T') $action $file" >> "$LOG"
# 可在此加入你的业务逻辑,如重载服务、同步、校验等
done
chmod +x /usr/local/bin/monitor.sh
sudo systemctl daemon-reload
sudo systemctl enable --now file-monitor.service # 见下方 systemd 服务示例
sudo systemd-run --on-active=5min /usr/local/bin/one_time_task.sh
四 数据库触发器的实用技巧(以 MySQL 为例)
DELIMITER //
CREATE TRIGGER before_insert_user
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.status = 'active';
END;
//
DELIMITER ;
五 实践建议与排错清单
journalctl -u <unit> 追踪。systemctl list-timers --alljournalctl -u <timer/service> -binotifywait -m <path> -e create,modify,deletesystemctl daemon-reload