实战`inotify` 和 `systemd.path` | 文件变化时触发操作

inotifysystemd.path都能做到"文件变化时触发操作"。


方案一:inotify 工具(轻量级脚本方式)

1. 安装工具

bash 复制代码
sudo apt install inotify-tools   # Debian/Ubuntu
sudo yum install inotify-tools   # RHEL/CentOS

2. 写一个监控脚本

比如:监控 /tmp/test.txt,如果文件变化,就自动执行脚本

bash 复制代码
#!/bin/bash

FILE="/tmp/test.txt"

inotifywait -m -e modify "$FILE" | while read path action file; do
    echo "$(date): $FILE was modified, action=$action" >> /tmp/filewatch.log
    # 这里可以执行任意操作,比如重启服务
    # systemctl restart myapp.service
done

保存为 watch_file.sh,加执行权限:

bash 复制代码
chmod +x watch_file.sh

3. 运行

bash 复制代码
./watch_file.sh

现在只要 echo "hello" >> /tmp/test.txt,日志就会写入 /tmp/filewatch.log


方案二:systemd.path(更稳定的服务化方式)

适合长期运行的监控,不需要自己写循环。

1. 创建 .path 单元

/etc/systemd/system/filewatch.path

ini 复制代码
[Unit]
Description=Watch /tmp/test.txt changes

[Path]
PathChanged=/tmp/test.txt

[Install]
WantedBy=multi-user.target

2. 创建对应的 .service 单元

/etc/systemd/system/filewatch.service

ini 复制代码
[Unit]
Description=Action when /tmp/test.txt changes

[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c 'echo "$(date): /tmp/test.txt changed" >> /tmp/filewatch.log'

3. 启动

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now filewatch.path

现在,每次 /tmp/test.txt 变化时,systemd 就会自动调用 filewatch.service


对比总结

特性 inotifywait 脚本 systemd.path
部署复杂度 简单,直接写脚本 稍复杂,要写 .path + .service
运行方式 前台/后台脚本 systemd 接管,稳定守护
适合场景 临时监控,调试 长期运行,系统级服务
相关推荐
cn_lyg9 小时前
Linux的入门级常用操作命令
linux·运维·服务器
就叫飞六吧10 小时前
TOML vs YAML:为什么 Cargo 选择 TOML?
linux·运维·服务器
IMPYLH10 小时前
Linux 的 test 命令
linux·运维·服务器·chrome·bash
xrui5811 小时前
2026实战:深度解析 Gemini 3.1 镜像站函数调用在自动化运维工单中的应用
linux·服务器·网络
HackTwoHub11 小时前
Linux 内核史诗级本地提权 全网深度复现、原理完整分析( CVE-2026-31431)
linux·运维·安全·web安全·网络安全·代码审计·安全架构
她说彩礼65万11 小时前
C语言 文件
linux·服务器·c语言
txg66612 小时前
自动驾驶领域热点简报(2026-04-26 ~ 2026-05-03)
linux·人工智能·自动驾驶
二哈赛车手12 小时前
新人笔记---ES和kibana启动问题以及一些常用的linux的错误排查方法,以及ES,数据库泄密解决方案[超详细]
java·linux·数据库·spring boot·笔记·elasticsearch
嵌入式×边缘AI:打怪升级日志12 小时前
嵌入式Linux开发核心自测题(全系列精华浓缩)
java·linux·运维
嵌入式×边缘AI:打怪升级日志12 小时前
TinaSDK Linux Kernel 基本使用(全志T113开发板)
linux·运维·服务器