私は CentOS 7 で作業しています。CD が挿入されるたびにサービスを開始するための udev ルールを作成しました。udev ルールは次のとおりです。
KERNEL=="sr1", SUBSYSTEM=="block", ACTION=="change", ENV{ID_CROM_CD}=="1", ENV{DEVTYPE}=="1", RUN+="/bin/systemctl restart cd-mount@%k.service"
サービスは次のように構成されています。
[Unit]
Description=Mount CD drive on %i
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/local/bin/cd-mount.sh %i
ExecStop=/usr/local/bin/cd-mount.sh %i
何らかの理由で、udev ルールが 2 回呼び出されます。CD-ROM をマウントしているので、これはかなり面倒です。そのため、エラーが発生しました。ルールを 1 回だけ呼び出されるように記述するにはどうすればよいでしょうか。
編集: udev ルールを変更したので、サービスは 1 回だけ再起動されるようになりました。udev ルールは次のようになります。
KERNEL=="sr[0-1]", SUBSYSTEM=="block", ACTION=="change", ENV{ID_CROM_CD}=="1", ENV{DEVTYPE}=="disk", ENV{ID_FS_TYPE}=="udf" RUN+="/bin/systemctl restart cd-mount@%k.service"
問題が 1 つ残っています。このルールは、「取り出し」コマンドが使用された場合にのみ、別の CD が挿入されたことを検出します。取り出しボタンを押しても何も起こりません。理由がわかる人はいますか?