As regras para ações add
são executadas durante a inicialização do sistema, se o dispositivo estiver presente. Isso é feito executando udevadm info --action=add
em um sistema SysVinit e internamente em um sistema Upstart ou Systemd. No entanto, isso acontece muito cedo no processo de inicialização, no momento em que o sistema de arquivos raiz ainda é montado como somente leitura e os sistemas de arquivos de /etc/fstab
ainda não estão montados. Não tenho certeza se /run
já está disponível nesse ponto. Isso pode ser muito cedo para o que seu script precisa fazer.
A maneira rápida e portátil, mas portátil, de executar seu script durante a inicialização seria executá-lo a partir de /etc/rc.local
, condicionalmente se o dispositivo estivesse presente.
if [ -e /dev/disk/by-id/… ]; then
/var/scripts/my-script.sh
fi
Tenha em atenção que existe uma possível condição de corrida se o dispositivo for inserido durante o arranque: o script será executado assim que o dispositivo for detectado e, em seguida, novamente a partir de /etc/rc.local
.
Uma solução mais limpa seria definir uma unidade de sistema e declarar as dependências necessárias em seu script. Você ainda precisa tomar cuidado com a possível condição de corrida.