udev
をセットアップして、外付けUSBハードドライブが接続および取り外しられたときに処理します(まだマウントされていません)。これまでのところ、ファイルへのディスクの追加/削除をログに記録するために、/etc/udev/rules.d/10-local.rules
に2つの新しいルールを作成しました。
SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="add", RUN+="/bin/echo 'inserted lacie' >> /home/herman/udev_file"
SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="remove", RUN+="/bin/echo 'removed lacie' >> /home/herman/udev_file"
udevd
デーモンを起動し、ハードドライブを数回再接続しましたが、/home/herman/udev_file
が作成されません。ルールでは、コマンドからのキーを使用しました udevadm info -a -n /dev/sdb
これは問題のハードドライブです。私はここで何が間違っているのですか?ディスクが検出されており、mount
は問題なく実行できます。助けていただければ幸いです。
udev
はログ情報を/var/log/messages
に出力しますが、デフォルトではエラーのみをログに記録し、必要なことを実行せず、エラーも発生しないコマンドを作成したことがあります。 >>
リダイレクトはシェルによって処理され、udevはシェルを介してコマンドを実行しないため、文字通りバイナリ/bin/echo
を実行し、引数'inserted lacie' >> /home/herman/udev_file
を渡します。 udevを変更してさらにログを記録すると(/etc/udev/udev.conf
を編集してudev_log="info"
行を追加)、そのコマンドが実行され、出力が'inserted lacie' >> /home/herman/udev_file
であることがわかります
個人的には、udev
を再起動せずに編集できるように、必要なことを実行する短いシェルスクリプトを作成することを好みますが、/bin/sh -c
を使用してコマンドを実行し、リダイレクトを処理することもできます。
SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="add", RUN+="/bin/sh -c '/bin/echo inserted lacie >> /home/herman/udev_file'"