Encontrei várias perguntas no link & no link relacionado ao script de lançamento pelas regras do udev. Mas não consigo encontrar uma solução exata ou uma resposta certa para executar o script Bash .
Então, estou fazendo a pergunta (canônica): Como executar / iniciar / executar o script Bash por meio das regras do udev?
Outra coisa que eu encontrei em Escrevendo as regras do udev é:
udev does not run these programs on any active terminal, and it does not execute them under the context of a shell. Be sure to ensure your program is marked executable, if it is a shell script ensure it starts with an appropriate shebang (e.g. #!/bin/sh), and do not expect any standard output to appear on your terminal.
Por isso, quero saber se possível que "Como executar o script bash pelas regras do udev?"
Aqui está um exemplo simples de executar o bash-script.
Eu escrevi 99-myrule.rules
em /etc/udev/rules.d
, que contém:
ACTION=="add", ATTR{idVendor}=="0781", ATTR{idProduct}=="5567", RUN+="/home/pandya/example.sh"
Eu encontrei o fornecedor & ID do produto de lsusb
output:
$ lsusb | grep SanDisk
Bus 001 Device 066: ID 0781:5567 SanDisk Corp. Cruzer Blade
E eu quero executar o comando experimental zenity --info
quando meu pendrive (do SanDisk listado acima) estiver anexado.
então, eu escrevi /home/pandya/example.sh
(que é chamado de RUN+=
em regras do udev) contians:
#!/bin/bash
zenity --info &
exit
Mas este script não está em execução (apesar de ter permissão de execução). Eu também tentei seguir:
-
export DISPLAY=:0
no script antes de zenity --info
-
bash -c 'DISPLAY=:0 zenity --info
E claro:
-
sudo restart udev
-
sudo udevadm control --reload-rules
Mas não consigo obter a saída zenity --info
.
Daí Como posso executar o script Bash por meio das regras do udev?
Sugira-me se estiver faltando alguma coisa.