首页主机资讯centos触发器使用教程

centos触发器使用教程

时间2025-10-09 10:44:03发布访客分类主机资讯浏览1395
导读:CentOS触发器使用教程(常见场景) 一、数据库触发器(以MySQL为例) 数据库触发器用于在表操作(INSERT、UPDATE、DELETE)时自动执行逻辑,适用于数据一致性维护(如自动填充字段、级联更新)。 步骤: 登录MySQL:...

CentOS触发器使用教程(常见场景)

一、数据库触发器(以MySQL为例)

数据库触发器用于在表操作(INSERT、UPDATE、DELETE)时自动执行逻辑,适用于数据一致性维护(如自动填充字段、级联更新)。
步骤:

  1. 登录MySQL:使用具有足够权限的用户(如root)登录数据库。
  2. 创建触发器
    • 语法结构: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 ;
          
      
  3. 验证触发器:插入一条未指定status的记录,查询结果应自动填充statusactive

二、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)

适用于监控文件/目录变化(如新增、修改、删除),触发相应操作(如备份、通知)。
步骤:

  1. 安装inotify-tools
    sudo yum install inotify-tools -y
    
  2. 编写监控脚本(如监控/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
    
  3. 赋予执行权限并运行
    chmod +x /usr/local/bin/file_monitor.sh
    /usr/local/bin/file_monitor.sh &
       # 后台运行(生产环境建议用systemd管理)
    
  4. 验证效果:向/data目录添加或修改文件,查看/var/log/file_monitor.log是否有记录。

四、包管理器触发器(yum/dnf)

Yum/DNF在执行安装、更新、删除操作时,会自动触发依赖处理(如解决依赖关系、安装所需包)。若需自定义触发逻辑(如安装后执行脚本),可使用yum-plugin-trigger插件。
步骤:

  1. 安装插件
    sudo yum install yum-plugin-trigger -y
    
  2. 配置自定义触发器
    编辑/etc/yum/pluginconf.d/trigger.conf,启用插件并添加规则:
    [main]
    enabled=1
    
    [trigger]
    name=my_custom_trigger  # 触发器名称
    command=/usr/local/bin/custom_script.sh  # 触发后执行的脚本路径
    
  3. 测试触发器:执行yum installdnf install命令时,插件会自动调用custom_script.sh

五、传统定时任务(cron)

适用于简单的周期性任务(如每天备份、每小时清理日志),是CentOS中最常用的触发器之一。
步骤:

  1. 编辑当前用户的crontab
    crontab -e
    
  2. 添加定时任务
    格式:分钟 小时 日 月 星期 命令*表示任意值)。
    • 示例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 {
      }
           \;
          
      
  3. 保存并验证
    • 保存文件后,cron会自动加载任务。
    • 查看当前用户的cron任务:crontab -l
  4. 日志调试
    在脚本中添加日志记录(如echo "$(date): Backup started" > > /var/log/backup.log),并通过tail -f /var/log/cron查看cron日志。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos触发器使用教程
本文地址: https://pptw.com/jishu/721149.html
centos触发器支持哪些命令 centos触发器安全吗

游客 回复需填写必要信息