このudevルールが実行されないのはなぜですか?

このudevルールが実行されないのはなぜですか?

私は次の非常に基本的なudevルールを持っています/etc/udev/rules.d/99-sd.rules

ACTION=="add", SUBSYSTEM=="mmc", KERNEL=="mmcblk0p1", RUN+="/usr/bin/echo 'aa' > /tmp/test"

目的は、testSDカードを挿入し、そのp1パーティションを認識したらファイルを作成することです。

これで、このルールを作成した後にすべてのことを行いました。

 sudo udevadm control --reload-rules
 sudo systemctl restart udev
 sudo reboot

ところで、SDカードを挿入してもファイルは生成されません。 (SDカードも動作し、マウントすることもできます。)

ここで問題は何ですか?これは私を狂わせ、何が間違っているのかわかりません。 udevadmを使用すると、SDカードのカーネルイベントを表示できます。しかし、なぜ私のファイルが生成されないのですか?

オペレーティングシステム: Debian ブルスアイ

これはdmesgです:

[   85.299246] mmc0: new ultra high speed SDR104 SDXC card at address aaaa
[   85.301507] mmcblk0: mmc0:aaaa SN64G 59.5 GiB
[   85.307164]  mmcblk0: p1

/tmp「bash」を使っても空です。

$ cat /etc/udev/rules.d/99-sd.rules
ACTION=="add", SUBSYSTEM=="mmc", KERNEL=="mmcblk0p1", RUN+="/bin/bash -c '/usr/bin/echo aa > /tmp/test'"

udevadm monitor:

$ sudo udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[191.651922] add      /devices/platform/fe2b0000.dwmmc/mmc_host/mmc0/mmc0:aaaa (mmc)
KERNEL[191.655196] add      /devices/virtual/bdi/179:96 (bdi)
UDEV  [191.656246] add      /devices/platform/fe2b0000.dwmmc/mmc_host/mmc0/mmc0:aaaa (mmc)
UDEV  [191.656604] add      /devices/virtual/bdi/179:96 (bdi)
KERNEL[191.657702] add      /devices/platform/fe2b0000.dwmmc/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0 (block)
KERNEL[191.657862] add      /devices/platform/fe2b0000.dwmmc/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0/mmcblk0p1 (block)
KERNEL[191.658527] bind     /devices/platform/fe2b0000.dwmmc/mmc_host/mmc0/mmc0:aaaa (mmc)
UDEV  [191.689858] add      /devices/platform/fe2b0000.dwmmc/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0 (block)
UDEV  [191.732813] add      /devices/platform/fe2b0000.dwmmc/mmc_host/mmc0/mmc0:aaaa/block/mmcblk0/mmcblk0p1 (block)
UDEV  [191.735289] bind     /devices/platform/fe2b0000.dwmmc/mmc_host/mmc0/mmc0:aaaa (mmc)

ベストアンサー1

実行するコマンドはexec()シェル用ではなくシェル用であるため、>次のコマンドを追加することはできません。

RUN+="/bin/bash -c '/usr/bin/echo aa > /tmp/test'"

一重引用符内にスペースを引用する必要がある場合は、エスケープされた二重引用符を使用できます(例:)\"abc def\"

ログからより多くのデバッグ情報を取得するには、一時を使用してデバッグレベルを設定し、sudo udevadm control --log-priority=debugテールログを使用してsudo journalctl -fカードを挿入すると、RUNコマンドが表示されます。リセットレベルを使用してくださいsudo udevadm control --log-priority=info

おすすめ記事