-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 .