监视文件夹的系统服务

监视文件夹的系统服务

我正在开发一个嵌入式Linux 映像。我目前有一个udev规则来监视 USB 连接/分离事件。如果连接了 USB,则会运行脚本以在设备中搜索脚本upgrade.sh

我现在想扩展它来监视系统上的文件夹。如果将文件添加到此文件夹,我想运行 shell 脚本。

我不确定从哪里开始,这是另一条udev规则吗?

答案1

你想要设置的是系统path单元以及相关服务。这两个单元文件可能如下所示:

  1. 路径规范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
    
  2. 将调用您的脚本的服务需要具有相同的名称(扩展名除外):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

相关内容