我正在开发一个嵌入式Linux 映像。我目前有一个udev
规则来监视 USB 连接/分离事件。如果连接了 USB,则会运行脚本以在设备中搜索脚本upgrade.sh
。
我现在想扩展它来监视系统上的文件夹。如果将文件添加到此文件夹,我想运行 shell 脚本。
我不确定从哪里开始,这是另一条udev
规则吗?
答案1
你想要设置的是系统path
单元以及相关服务。这两个单元文件可能如下所示:
路径规范
watch-folder.path
。在此示例中,我们使用PathChanged
指令来检查是否已完成对路径的任何写入操作(如果需要,您也可以使用它来监视特定文件)。[Unit] Description=Systemd unit to watch a folder for new files [Path] PathChanged=/path/to/folder/you/want/to/monitor/ [Install] WantedBy=multi-user.target
将调用您的脚本的服务需要具有相同的名称(扩展名除外):
watch-folder.service
[Unit] Description=Systemd service to process changes to a watched folder [Service] Type=oneshot ExecStart=/path/to/shellscript.sh
请注意,shell 脚本不会接收任何参数,因此它需要自己知道受监视文件夹的路径(硬编码)。
将文件复制到适当的目录(例如/etc/systemd/system
)并启用小路(不是服务!)通过
systemctl enable watch-folder.path
然后,通过以下方式启动路径监控
systemctl start watch-folder.path