Busqué /lib/udev/rules.d
ejemplos de reglas relacionadas con el disco. En un sistema Ubuntu, un archivo de reglas proporciona la variable de entorno ID_FS_UUID_ENC
que puede usar en sus propios archivos de reglas.
Por lo tanto, puse un archivo de reglas personalizado debajo /etc/udev/rules.d/foodevice.rules
. Como no tiene el prefijo de un número, udev lo ejecuta finalmente. Por cierto, el demonio de udev estuvo atento /etc/udev/rules.d
a los cambios, por lo que no es necesario reiniciarlo en los cambios de archivos.
El contenido de /etc/udev/rules.d/foodevice.rules
es:
ACTION=="add", KERNEL=="sd*[!0-9]", ENV{ID_FS_UUID_ENC}=="FFFF-AAAF",
RUN+="/usr/bin/sudo -u juser /home/juser/path/script.sh"
(esta es una regla: debe eliminar la nueva línea después de la cláusula ENV porque udev no tiene un mecanismo de continuación de línea)
Un programa iniciado por udev bloquea el demonio, por lo que no debería ejecutarse durante mucho tiempo. Lo resolví a través de at
, es decir, separándome del proceso haciendo el trabajo real:
$ cat /home/juser/path/script.sh
#!/bin/sh
echo ~/path/mountcopystuff.sh | at now