-
O que funciona para mim, adicionando atraso (
sleep
) edisown
do script que está atrasado usando um script intermediário.RUN{
type
}
... This can only be used for very short-running foreground tasks. Running an event process for a long period of time may block all further events for this or a dependent device. Starting daemons or other long running processes is not appropriate for udev; the forked processes, detached or not, will be unconditionally killed after the event handling has finished.
source:
man udev
-
Há um caso semelhante aqui: A resposta de Fëamarto parece melhor que a minha solução aqui. Ele aguarda até que o sistema de arquivos esteja pronto no modo
rw
. Você pode tentar.Como esta é uma unidade USB, ela pode ser removida antes da montagem. O script permanecerá ativo até a próxima reinicialização ou será plugado novamente (o que acionará outra instância) e montado.
Uma maneira de corrigir isso é verificar se o
/dev/sdxY
ainda existe. em cada ciclo. -
Aqui está minha configuração:
-
/etc/udev/rules.d/99-sneetsher-tests.rules
ACTION=="add", ENV{ID_FS_UUID}=="6664-B2DA", RUN+="/usr/bin/sudo -u user /home/user/mycrazy.sh"
-
/home/user/mycrazy.sh
#!/bin/sh /home/user/mycrazy2.sh & disown
-
/home/user/mycrazy2.sh
#!/bin/sh PATH_USB=/media/user/MYFLASH3 sleep 5 mkdir $PATH_USB/some_folder
-