Hay un dispositivo de almacenamiento en el block
subsistema, por lo que querrá SUBSYSTEM=="block"
en su regla, así:
ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
RUN+="/path/to/script"
Si está utilizando systemd
, puede ejecutar una systemd
unidad cada vez que se agrega un dispositivo de almacenamiento USB. Cree el archivo de la unidad, por ejemplo /etc/systemd/system/my-usb-rule.service
:
[Service]
Type=oneshot
ExecStart=/path/to/script
y la regla, por ejemplo /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"
Ahora udev
se activará my-usb-rule.service
(que a su vez ejecutará su script) en cualquier evento de agregar dispositivo de almacenamiento usb .
No olvide volver a cargar la configuración después de editar las reglas / unidades:
udevadm control --reload
systemctl daemon-reload
SUBSYSTEM=="block", SUBSYSTEMS=="usb"
(tenga en cuenta la diferencia con la S ). Dudo que siempre pueda funcionarENV{ID_BUS}=="usb"
en la respuesta original, porque veo el valor scsi aquí. Pero estoy trabajando en un problema ligeramente diferente al que se preguntó originalmente, quiero una memoria USB (pendrive), pero no unidades externas.ENV{ID_BUS}
valor no es el mismo en todos los sistemas. Ayer estaba trabajando en un sistema antiguo con udev 210 (creo. No puedo comprobarlo ahora porque la máquina no está en Internet). Allí el valor era scsi . Ahora, estoy en una máquina más nueva con udev 228 y el valor es usb . Para el mismo dispositivo USB, lo llevo conmigo. (no estoy seguro si la versión de udev es el factor relevante aquí, también podría ser el kernel o cualquier otro paquete que instale las reglas de udev, e, g, udisks2) Aún asíSUBSYSTEM=="block", SUBSYSTEMS=="usb"
(nota S ) podría ser portátil y seguro.