私は現在、USB デバイスが接続されているときに C で書かれたプログラムを実行するプロジェクトに取り組んでいます。これは udev ルールで可能ですか?
現在、デバイスを接続したときに Hello World スクリプトを実行するようにしています。ただし、複数回実行されます。
現在のパス:/etc/udev/rules.d/98-local.rules
現在のルール:
SUBSYSTEMS=="usb"、ACTION=="追加"、RUN+="/usr/local/bin/USB.sh"
スクリプトのパス: /usr/local/bin/USB.sh
脚本:
#!/bin/bash
echo 'Hello World!' >>"/home/<username>/Desktop/udev.out"
exit
実行可能ファイルを実行するために、次のようなことを試しました。
#!/bin/bash
usr/games/blackjack
exit
ターミナルでは usr/games/blackjack と入力しても機能しますが、USB デバイスが挿入されていると機能しません。ただし、スクリプトが実行されていることはわかっています。これらを同じファイルにまとめており、hello world が作成されているからです。
また、次のように、ユーザー アカウントから実行可能ファイルを実行しようとしました。
SUBSYSTEMS=="usb", ACTION=='add", RUN+="/bin/su tyler -c '/usr/local/bin/USB.sh'"
ただし、これも機能しません。
デバイス権限の問題ですか、それとも実行可能ファイルを実行できないだけですか?
*注: http://reactivated.net/writing_udev_rules.htmlにある udev ルールの説明をよく読みました。