0

USB ドライブを組み込みシステムに接続するときに、スクリプトを実行する必要があります。私の考えは:

SUBSYSTEM=="block",ACTION=="add", KERNELS=="sd?",RUN+="/script param1 %k"

任意の USB スティックで実行する必要があるため、ベンダー固有のパラメーターを使用できません。これで、スクリプトは sd[a..][ ,1..] で実行されますが、sd[a..] が 接続した場合 (NULLの場合は _) のみ実行する必要があります。とともに ?切断すると機能しますが、接続すると、パーティションごとに実行されますシェルスクリプトでこれを解析する可能性はありますか?

誰かがここで私を助けてくれたらいいのに。(誰かが私が質問を削除したのを見た場合: 申し訳ありませんが、? が最終的な解決策だと思いました。しかし、どちらも機能しませんでした)。

udevadm info --attribute-walk -name /dev/sda1 の出力は次のとおりです。

  looking at device '/devices/platform/fsl-ehci.1/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda/sda1':
    KERNEL=="sda1"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{partition}=="1"
    ATTR{start}=="63"
    ATTR{size}=="1526112"
    ATTR{alignment_offset}=="0"
    ATTR{discard_alignment}=="4294935040"
    ATTR{stat}=="       0        0        0        0        0        0        0        0        0        0        0"
    ATTR{inflight}=="       0        0"

  looking at parent device '/devices/platform/fsl-ehci.1/usb1/1-1/1-1:1.0/host2/target2:0:0/2:0:0:0/block/sda':
    KERNELS=="sda"
    SUBSYSTEMS=="block"
    DRIVERS==""
    ATTRS{range}=="16"
    ATTRS{ext_range}=="256"
    ATTRS{removable}=="1"
    ATTRS{ro}=="0"
    ATTRS{size}=="15656960"
    ATTRS{alignment_offset}=="0"
    ATTRS{discard_alignment}=="0"
    ATTRS{capability}=="51"
    ATTRS{stat}=="       1        0        8        4        0        0        0        0        0        4        4"
    ATTRS{inflight}=="       0        0"
4

3 に答える 3

0

で呼び出されたときにスクリプトを終了させるのは/dev/sd??*どうですか?

于 2012-06-25T09:12:24.360 に答える
0
SUBSYSTEM=="block", ACTION=="add", KERNELS=="sd*[!0-9]", RUN+="/script param1 %k"

sd*任意の文字に一致しますが[!0-9]、パーティション番号は除外されるため、ブロック デバイスのみが残ります。

少なくとも CentOS 6 システムでは、/lib/udev/rules.d に多くのルールがあります。ルール ファイル 60-persistent-storage.rules は、上記のようなルールを定義します。

于 2013-03-15T23:14:00.507 に答える
0

単に:

SUBSYSTEM=="block", ACTION=="add", KERNELS=="sd?",  DEVTYPE="disk", RUN+="/script param1 %k"
于 2016-11-18T14:04:18.593 に答える