2020年7月1日URLをコピーしました!Linuxではおなじみのudevルール。USBが挿入された時にプログラムを実行、逆に抜去された時にプログラムを実行したい。ときにはudevルールを記述すればよいのですが、今回はそのudevルールがうまく動作しなかったので備忘録として原因と対策をまとめておく。目次udevルールのACTION今回usbを挿入した場合にhoge.shの実行を、そして抜去した時には、作成された中間ファイルの削除を行いたかった。そのため記述したudevルールのACTION部分は以下のようになる。hogefile*"udevルールがうまく動作しない上記の記述だと挿入した際のaddアクション(hoge.sh)は実行されるのだが、removeアクション(中間ファイルの削除)は実行されなかった。ENVの指定がマズイのかと思い以下のコマンドを打ち、その後にUSBを挿入してID_BUSとID_FS_TYPEを確認。--propertyですが、指定した通りID_BUS=usb、ID_FS_TYPE=vfatで間違いなかった。RUNの部分を疑ってみる。今回は中間ファイル一式を削除したいので/bin/rm以降にワイルドカードでファイル指定。hogefile*(hogefile~というファイルすべて削除)ワイルドカードが怪しい??となんとなくの勘でワイルドカードを使用せず1ファイル消去を実行するとサクッと動いた。解決方法...ということでudevルールにワイルドカードを使うのがNGのようだ。ワイルドカードを使って複雑なことがしたいというのならばshellに記述してudevルールからそのshellを呼び出してあげればいい。