組み込みLinuxイメージを開発中です。現在、udev
USB接続/分離イベントを監視する規則があります。 USBが接続されると、デバイスからスクリプトを検索するスクリプトが実行されますupgrade.sh
。
今システムのフォルダを監視するように拡張したいと思います。このフォルダにファイルを追加したら、シェルスクリプトを実行したいと思います。
どこから始めるべきかわかりません。これは別のudev
ルールですか?
答え1
設定したいことシステムpath
装置および関連サービス。 2つのユニットファイルは次のとおりです。
パス指定
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
シェルスクリプトはパラメータを受け取らないため、監視対象フォルダ自体(ハードコード)へのパスを知る必要があります。
ファイルを適切なディレクトリ(たとえば/etc/systemd/system
)にコピーして有効にします。道(サービスではありません!)パス
systemctl enable watch-folder.path
その後、次の方法でルートの監視を開始します。
systemctl start watch-folder.path