新しいデバイスが表示されると、udevに通知されます。通常/dev
、組み込みルールに基づいてデバイスファイルを作成します。これらのルールを上書きして、デバイスファイルの場所を変更したり、任意のプログラムを実行したりできます。このようなudevルールの例を次に示します。
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
NAME=
ディレクティブは、デバイス・ファイルの場所を変更し、私は説明の目的のためにそれを含めるが、それはおそらくあなたのユースケースのために有用ではありません。ATTRS
ルールは、デバイスを識別します。udevinfo -a -n /dev/sdz
ドライブが使用可能なときに実行して、ドライブの/dev/sdz
属性を確認します。入力のATTRS
1つのセクションからのルールしか使用できないことに注意してくださいudevinfo
(さらに、ATTR
最初のセクションからのルールを使用できます)。詳細については、「udevadm info -a -n / dev / sdb」の出力についてをご覧ください。このルールはのようなファイルに入れられます/etc/udev/rules.d/local-storage-keypass.rules
。
RUN
ディレクティブで指定されたスクリプトに、実行するコマンドを入れます。何かのようなもの:
#!/bin/sh
set -e
if [ -d /media/keypass-drive ]; then
[ "$(df -P /media/keypass-drive | awk 'NR==2 {print $1}')" = "$(df -P /media | awk 'NR==2 {print $1}')" ]
else
mkdir /media/keypass-drive
fi
mount "$1" /media/keypass-drive
su ereon -c 'keypass2' &
udevからトリガーされたスクリプトからGUIプログラムを実行する際に問題が発生した場合は、「別のユーザーのデスクトップでrootとしてグラフィカルプログラムを起動できますか?」を参照してください。
¹ ない現代のシステムで/dev
udevtmpfsです。
udevadm info -a -n /dev/sdX
、複数の祖先に基づいて照合することはできません。デバイス自体と単一の祖先からのデータに基づいてのみ照合できます。これについてはで説明してman 7 udev
いますが、見落としやすい小さなコメントです。