centos触发器使用教程
导读:CentOS触发器使用教程(常见场景) 一、数据库触发器(以MySQL为例) 数据库触发器用于在表操作(INSERT、UPDATE、DELETE)时自动执行逻辑,适用于数据一致性维护(如自动填充字段、级联更新)。 步骤: 登录MySQL:...
CentOS触发器使用教程(常见场景)
一、数据库触发器(以MySQL为例)
数据库触发器用于在表操作(INSERT、UPDATE、DELETE)时自动执行逻辑,适用于数据一致性维护(如自动填充字段、级联更新)。
步骤:
- 登录MySQL:使用具有足够权限的用户(如root)登录数据库。
- 创建触发器:
- 语法结构:
DELIMITER //
(临时修改分隔符,避免与触发器内语句冲突)→CREATE TRIGGER 触发器名 触发时机(BEFORE/AFTER) 触发事件(INSERT/UPDATE/DELETE) ON 表名 FOR EACH ROW BEGIN 逻辑代码 END//
→DELIMITER ;
(恢复默认分隔符)。 - 示例:在
users
表插入新用户时,自动将status
字段设为active
。DELIMITER // CREATE TRIGGER before_insert_user BEFORE INSERT ON users FOR EACH ROW BEGIN SET NEW.status = 'active'; END// DELIMITER ;
- 语法结构:
- 验证触发器:插入一条未指定
status
的记录,查询结果应自动填充status
为active
。
二、Systemd服务触发器(定时/事件驱动)
Systemd的触发器通过**服务单元(.service)和定时器单元(.timer)**实现,适用于定时执行任务或依赖其他服务的事件触发。
1. 定时执行任务(定时器模式)
- 创建服务单元:定义要执行的任务(如
/usr/bin/backup.sh
)。
内容示例:sudo vi /etc/systemd/system/backup.service
[Unit] Description=Daily Backup Service [Service] ExecStart=/usr/bin/backup.sh User=root
- 创建定时器单元:定义触发时间(如每天凌晨2点)。
内容示例:sudo vi /etc/systemd/system/backup.timer
[Unit] Description=Run Backup Daily at 2 AM [Timer] OnCalendar=*-*-* 02:00:00 # 每天2点触发 Persistent=true # 错过的任务会在下次启动时补执行 [Install] WantedBy=timers.target
- 启用并启动:
sudo systemctl daemon-reload # 重新加载systemd配置 sudo systemctl enable --now backup.timer # 启用并立即启动定时器
- 验证状态:
sudo systemctl list-timers --all # 查看所有定时器状态 sudo systemctl status backup.timer # 查看特定定时器详情
2. 事件驱动触发(依赖服务)
- 若需在
network.service
启动后自动运行my_service.service
,编辑my_service.service
:[Unit] Description=My Custom Service After=network.service # 依赖network服务 [Service] ExecStart=/usr/bin/my_service_executable Restart=on-failure [Install] WantedBy=multi-user.target
- 重新加载systemd并启动服务:
sudo systemctl daemon-reload sudo systemctl enable --now my_service.service
三、文件系统事件触发器(inotifywait)
适用于监控文件/目录变化(如新增、修改、删除),触发相应操作(如备份、通知)。
步骤:
- 安装inotify-tools:
sudo yum install inotify-tools -y
- 编写监控脚本(如监控
/data
目录的文件修改):
内容示例:sudo vi /usr/local/bin/file_monitor.sh
#!/bin/bash inotifywait -m /data -e modify | while read path action file; do echo "$(date): File $file in $path was $action" > > /var/log/file_monitor.log # 此处可添加其他操作(如备份、发送邮件) done
- 赋予执行权限并运行:
chmod +x /usr/local/bin/file_monitor.sh /usr/local/bin/file_monitor.sh & # 后台运行(生产环境建议用systemd管理)
- 验证效果:向
/data
目录添加或修改文件,查看/var/log/file_monitor.log
是否有记录。
四、包管理器触发器(yum/dnf)
Yum/DNF在执行安装、更新、删除操作时,会自动触发依赖处理(如解决依赖关系、安装所需包)。若需自定义触发逻辑(如安装后执行脚本),可使用yum-plugin-trigger插件。
步骤:
- 安装插件:
sudo yum install yum-plugin-trigger -y
- 配置自定义触发器:
编辑/etc/yum/pluginconf.d/trigger.conf
,启用插件并添加规则:[main] enabled=1 [trigger] name=my_custom_trigger # 触发器名称 command=/usr/local/bin/custom_script.sh # 触发后执行的脚本路径
- 测试触发器:执行
yum install
或dnf install
命令时,插件会自动调用custom_script.sh
。
五、传统定时任务(cron)
适用于简单的周期性任务(如每天备份、每小时清理日志),是CentOS中最常用的触发器之一。
步骤:
- 编辑当前用户的crontab:
crontab -e
- 添加定时任务:
格式:分钟 小时 日 月 星期 命令
(*
表示任意值)。- 示例1:每天凌晨2点执行
/home/user/backup.sh
。0 2 * * * /home/user/backup.sh
- 示例2:每小时的第0分钟清理
/tmp
目录下超过7天的文件。0 * * * * find /tmp -type f -mtime +7 -exec rm { } \;
- 示例1:每天凌晨2点执行
- 保存并验证:
- 保存文件后,cron会自动加载任务。
- 查看当前用户的cron任务:
crontab -l
。
- 日志调试:
在脚本中添加日志记录(如echo "$(date): Backup started" > > /var/log/backup.log
),并通过tail -f /var/log/cron
查看cron日志。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos触发器使用教程
本文地址: https://pptw.com/jishu/721149.html