フォルダを監視するシステムサービス

フォルダを監視するシステムサービス

組み込みLinuxイメージを開発中です。現在、udevUSB接続/分離イベントを監視する規則があります。 USBが接続されると、デバイスからスクリプトを検索するスクリプトが実行されますupgrade.sh

今システムのフォルダを監視するように拡張したいと思います。このフォルダにファイルを追加したら、シェルスクリプトを実行したいと思います。

どこから始めるべきかわかりません。これは別のudevルールですか?

答え1

設定したいことシステムpath装置および関連サービス。 2つのユニットファイルは次のとおりです。

  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
    

    シェルスクリプトはパラメータを受け取らないため、監視対象フォルダ自体(ハードコード)へのパスを知る必要があります。

ファイルを適切なディレクトリ(たとえば/etc/systemd/system)にコピーして有効にします。(サービスではありません!)パス

systemctl enable watch-folder.path

その後、次の方法でルートの監視を開始します。

systemctl start watch-folder.path

関連情報