首页/系统/Linux 运维命令速查/path unit 目录/文件变化触发
本包目录(613 条)
文件与目录76 条文本处理77 条网络命令82 条进程与作业69 条磁盘与文件系统51 条用户与权限44 条日志与排查40 条
systemd 与服务42 条
包管理34 条性能与监控48 条定时任务与计划50 条

path unit 目录/文件变化触发

用路径变化替代轮询:PathExists/PathChanged/DirectoryNotEmpty 触发对应 service,适合「文件一到位就处理」的流水线。

Linux 运维命令速查系统更新于 2026-10-12
用途文件系统事件驱动的服务触发
指令PathExists / PathChanged / PathModified
激活path 与同名 service 配对)

完整示例

完整示例
# /etc/systemd/system/spool-watch.path
[Unit]
Description=watch incoming files
[Path]
DirectoryNotEmpty=/var/spool/incoming
[Install]
WantedBy=paths.target

# /etc/systemd/system/spool-watch.service
[Unit]
Description=process incoming
[Service]
Type=oneshot
ExecStart=/opt/scripts/process-incoming.sh

sudo systemctl daemon-reload && sudo systemctl enable --now spool-watch.path
systemctl list-units --type=path --no-pager
inotify 有实例数上限(fs.inotify.max_user_watches):监控大目录树前评估,或退化为 timer 周期扫。

易错点

  • unit 进入 failed 后再也收不到触发(path 未激活):加 Restart 或在脚本里永远 exit 0
  • DirectoryNotEmpty 触发后目录没清空会反复触发:服务要负责消费到空

数据来源与参考

  • man 5 systemd.path
  • man 5 systemd.timer(对比轮询)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌