Procurei /lib/udev/rules.d
exemplos de regras relacionadas ao disco. Em um sistema Ubuntu, um arquivo de regra fornece a variável de ambiente ID_FS_UUID_ENC
que você pode usar em seus próprios arquivos de regra.
Assim, coloquei um arquivo de regras personalizado /etc/udev/rules.d/foodevice.rules
. Como não é prefixado com um número, ele é finalmente executado pelo udev. Aliás, o daemon udev observou /etc/udev/rules.d
alterações, de modo que você não precisa reiniciá-lo nas alterações de arquivo.
O conteúdo de /etc/udev/rules.d/foodevice.rules
é:
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 é uma regra - você deve remover a nova linha após a cláusula ENV porque o udev não possui um mecanismo de continuação de linha)
Um programa iniciado pelo udev bloqueia o daemon - portanto, não deve ser executado por um longo tempo. Eu resolvi isso via at
- ou seja, via desanexação do processo realizando o trabalho real:
$ cat /home/juser/path/script.sh
#!/bin/sh
echo ~/path/mountcopystuff.sh | at now