Você pode testar se sua regra será atingida ou não executando
udevadm test /path/to/sysfs/dev
Você pode encontrar o nó sysfs dos dispositivos usando isto:
udevadm info -q path -n /dev/sda #To find sysfs node for first HDD
Então, para envolver tudo isso, será:
udevadm test $(udevadm info -q path -n /dev/sda) 2>&1 | more
Use o nome do seu script ou leia-o linha por linha, se quiser. Se o seu script for chamado, mas não estiver sendo executado, lembre-se de que você não possui um ambiente típico em um script do udev e, portanto, deve chamar todos os programas pelo caminho completo ou recriar o ambiente ao seu gosto. Tente substituir adb
e chromium-browser
por seus caminhos absolutos ( which adb
e which chromium-browser
)
O segundo exec
no seu script bash não será executado como esperado, já que o ambiente não especifica um sistema de janelas para o lançamento do Chromium. Acho que entendi o que você estava tentando fazer aqui, mas o udev foi projetado ser não interativo.
Em resposta ao seu comentário. Existem algumas telas abstratas em todos os sistemas unix chamados de displays. X11, que é o gerenciador de janelas (pense em explorer.exe, mais ou menos)
para o Ubuntu ocupa um deles (7 ou 8 eu acho, eu trabalho via ssh principalmente). Quando você executa um programa gráfico a partir da linha de comando (digamos, gedit), ele verifica a variável de ambiente DISPLAY
para determinar em qual tela será desenhada.
Tem mais a ver com isso, e eu nunca tive uma compreensão firme do que as "outras coisas" estão fazendo lá, mas eu tentaria fazer algumas coisas de diagnóstico a partir do seu script:
mkdir /tmp/udev-script
/usr/bin/printenv > /tmp/udev-script/environment.log
/bin/echo "My script was run!" > /tmp/udev-script/script.log
DISPLAY=:8 # or :7, play around with that
export DISPLAY # Promote shell variable to environment variable
exec /path/to/chromium 2> /tmp/udev-script/chromium.log 1>&2 &
exit # This is important for udev, see sources
source1 (udev)
source2(man udevadm)
source3 (EXEC)
source4 (DISPLAY)