Perangkat penyimpanan ada di dalam block
subsistem, jadi Anda harus menginginkannya SUBSYSTEM=="block"
, seperti ini:
ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
RUN+="/path/to/script"
Jika Anda menggunakan systemd
, Anda bisa menjalankan systemd
unit setiap kali perangkat penyimpanan USB ditambahkan. Buat file unit, misalnya /etc/systemd/system/my-usb-rule.service
:
[Service]
Type=oneshot
ExecStart=/path/to/script
dan aturannya, misalnya /etc/udev/rules.d/85-my-usb-rule.rules
:
ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
ENV{SYSTEMD_WANTS}="my-usb-rule.service"
Sekarang udev
akan memicu my-usb-rule.service
(yang pada gilirannya akan menjalankan skrip Anda) pada setiap perangkat penyimpanan usb menambahkan acara.
Jangan lupa memuat ulang konfigurasi setelah Anda mengedit aturan / unit:
udevadm control --reload
systemctl daemon-reload
SUBSYSTEM=="block", SUBSYSTEMS=="usb"
(perhatikan perbedaan dengan S ). Saya ragu itu selalu dapat bekerja denganENV{ID_BUS}=="usb"
jawaban yang asli, karena saya melihat nilai scsi di sini. Tapi saya sedang mengerjakan masalah yang sedikit berbeda dari yang semula diminta, saya ingin USB stick (flashdisk), tetapi tidak ada drive eksternal.ENV{ID_BUS}
nilai tidak sama pada semua sistem. Kemarin saya bekerja pada sistem yang lebih tua dengan udev 210 (saya percaya. Tidak dapat memeriksa sekarang karena mesin tidak ada di internet), Ada nilainya scsi . Sekarang, saya menggunakan mesin yang lebih baru dengan udev 228 dan nilainya adalah usb . Untuk stik USB yang sama, saya membawanya. (tidak yakin apakah versi udev adalah faktor yang relevan di sini, bisa juga merupakan kernel atau paket lain yang memasang aturan udev, e, g, udisks2) TetapSUBSYSTEM=="block", SUBSYSTEMS=="usb"
(catatan S ) mungkin portabel dan aman.