centos里trigger配置步骤
一、系统服务触发器(基于systemd)
系统服务触发器通过systemd的单元文件实现,适用于在系统事件(如启动、停止)或时间条件满足时自动启动/停止服务。
1. 创建自定义服务单元文件
首先创建服务的.service文件(如/etc/systemd/system/my_service.service),定义服务的基本信息和执行逻辑:
[Unit]
Description=My Custom Service
After=network.target # 确保网络服务启动后再运行本服务
[Service]
ExecStart=/usr/bin/my_service_executable # 替换为实际的可执行文件路径
Restart=on-failure # 服务失败时自动重启
[Install]
WantedBy=multi-user.target # 设置为多用户模式启动
保存后执行sudo systemctl daemon-reload重新加载systemd配置。
2. 创建触发器单元文件(可选)
若需基于特定事件(如网络启动、定时)触发服务,可创建.trigger文件(如/etc/systemd/system/my_service.trigger):
[Unit]
Description=Trigger for My Custom Service
[Trigger]
OnNetworkUp=* # 网络启动时触发
OnBootSec=10s # 系统启动后10秒触发
需配合WantedBy=multi-user.target启用。
3. 启用并启动服务
sudo systemctl enable my_service.service # 开机自启动
sudo systemctl start my_service.service # 立即启动
4. 验证触发器状态
- 查看所有触发器:
sudo systemctl list-units --type=trigger - 查看服务日志:
sudo journalctl -u my_service.service(排查触发失败问题)。
二、定时任务触发器(基于systemd定时器)
systemd定时器提供更灵活的时间触发机制,适用于周期性任务(如每小时、每天执行)。
1. 创建服务单元文件
定义要执行的任务(如/etc/systemd/system/my_task.service):
[Unit]
Description=My Scheduled Task
[Service]
ExecStart=/usr/bin/echo "Task executed at $(date)" >
>
/tmp/task.log # 示例:记录执行时间
2. 创建定时器单元文件
创建对应的.timer文件(如/etc/systemd/system/my_task.timer),设置触发时间:
[Unit]
Description=Run My Task hourly
[Timer]
OnCalendar=*-*-* *:00:00 # 每小时整点触发
Persistent=true # 若错过触发时间,下次启动时补执行
[Install]
WantedBy=timers.target # 关联到timers.target
3. 启用并启动定时器
sudo systemctl enable --now my_task.timer # 启用并立即启动(首次触发按OnCalendar计算)
4. 检查定时器状态
- 查看所有定时器:
sudo systemctl list-timers --all - 查看特定定时器详情:
sudo systemctl status my_task.timer。
三、事件驱动触发器(基于inotify-tools)
适用于监听文件系统事件(如文件修改、创建、删除),触发相应脚本。
1. 安装inotify-tools
sudo yum install inotify-tools -y
2. 编写监控脚本
创建脚本(如/usr/local/bin/watch_file.sh),监听指定目录并触发操作:
#!/bin/bash
inotifywait -m /path/to/watch -e modify,create,delete | while read path action file;
do
echo "File $file in $path was $action at $(date)" >
>
/tmp/inotify.log
/path/to/your/script.sh "$file" # 触发的目标脚本(替换为实际路径)
done
赋予执行权限:sudo chmod +x /usr/local/bin/watch_file.sh。
3. 运行脚本
nohup /usr/local/bin/watch_file.sh &
# 后台运行(避免终端关闭终止)
四、数据库触发器(以MySQL为例)
适用于数据库操作(如INSERT、UPDATE)时自动执行逻辑,需登录数据库操作。
1. 登录MySQL
mysql -u root -p
2. 创建触发器
以users表为例,在插入前自动设置status字段:
DELIMITER //
CREATE TRIGGER before_insert_user
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.status = 'active';
-- 插入前将status设为active
END;
//
DELIMITER ;
验证触发器:插入一条数据后查询status字段是否自动填充。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos里trigger配置步骤
本文地址: https://pptw.com/jishu/739246.html
