-1- Tenha cuidado ao executar um programa externo, pois udev
execução será suspensa durante a execução do programa externo. Melhor dito, esperará até que o programa externo saia antes de prosseguir. Você ainda pode executar um programa prolixo, mas você deve "desconectá-lo" imediatamente, executando-o em segundo plano. No ano, yr motoe.sh
provavelmente deveria ler:
#!/bin/bash
{
motoemount.sh
motoedesktop.sh
} &
que é equivalente a { motoemount.sh; motoedesktop.sh }&
, ou seja, executando motoedesktop.sh
incondicionalmente depois que motoemount.sh
saiu.
Observe que:
$ motoemount.sh &; motoedesktop.sh
significa que motoemount.sh
e motoedesktop.sh
são executados de forma assíncrona, ou seja, motoedesktop.sh
começa a executar antes que motoemount.sh
saia.
$ motoemount.sh && motoedesktop.sh
não é o mesmo. Nesse caso, motoedesktop.sh
será executado APENAS se o valor de saída de motoemount.sh
for "0".
-2- udev
não executa programas externos em nenhum terminal ativo, e não os executa sob o contexto de um shell. Certifique-se de que seu programa está marcado como executável, se for um script de shell, certifique-se de que ele comece com um shebang apropriado (por exemplo, #! / Bin / sh). O ambiente que udev
vê não será o mesmo ambiente em que você (ou quem quer que seja $ USER) esteja no console. Então, especifique caminhos absolutos para todos os seus comandos:
motoemount.sh
- > /path/to/motoemount.sh
e motoedesktop.sh
- > /path/to/motoedesktop.sh
e go-mtpfs
- > ...
gmessage
- > ...
rdesktop
- > ...
umount
- > /bin/umount
Para encontrar um caminho para os cmds do sistema (como umount
), você pode usar o cmd which [cmd]
sem colchetes, por exemplo:
$ which umount
/bin/umount
-3- Verifique se o processo yr tem privilégios suficientes para desmontar /media/MyAndroid/
-4- Se você imprimir para a tela (não tenho certeza que você faz, como eu não estou familiarizado com gmessage
, mas parece que você faz), verifique se sua variável de ambiente DISPLAY está definida (conhecida pelo udev) e exportada (passou para sub-shells). Caso contrário, não espere que qualquer saída padrão apareça no seu terminal. Por exemplo, veja isto , em particular a seção # set DISPLAY
.