O Udev não executará algumas linhas no meu script

0

Estou trabalhando em um Beaglebone Black no debian. Estou escrevendo regras do Udev para gerenciar o cartão µSD. O que eu preciso que o Udev faça: quando meu µSD estiver conectado, monte o µSD em /media/sdcard (ele faz) e execute o script que faz:

  • Pare o rsyslog.service (ele faz)
  • Mover / var / log para / media / sdcard (NÃO)
  • crie um link de / var / log para / media / sdcard / log (para continuar o registro, mas no cartão SD) (ele NÃO, mas o / media / sdcard / log não existe porque a etapa precedente falhou)
  • reinicie o serviço rsyslog (ele faz)

Aqui está o script que faz o que acabei de descrever:

logger 'Enterring /root/ServolineScripts/LogsonSDcard.sh script'
logger 'Refreshing Mountinglogs'
sudo rm /var/log/Mountinglogs.log
logger 'Stopping syslog service'
sudo /etc/init.d/rsyslog stop
sudo mv /var/log /media/sdcard/
sudo ln -s /media/sdcard/log /var/log
sudo /etc/init.d/rsyslog start
logger 'Successfully restarted rsyslog, logs are back on syslog!'
logger 'Restarted syslog service'
logger 'Quitting /root/ServolineScripts/LogsonSDcard.sh script'

Não sei por que não move o diretório / var / log. Este mesmo script executado manualmente com um simples sh /root/ServolineScripts/LogsonSDcard.sh funciona ...

Gostaria de saber se é um problema de direitos ...

    
por JeromeLEKIEFFRE 16.11.2017 / 16:37

1 resposta

0

Eu escrevo uma resposta com o que me ajudou nos comentários.

Créditos para @kostix;)

O problema principal foi provavelmente o uso excessivo de sudo em um script executado pelo Udev que já possui permissões de root . @kostix me propôs a escrever dois scripts diferentes , um com as ações e um main que chama as funções no script actions. Fiz os dois da solução, excluindo o sudo que não precisa existir e criando outro script com ações. Funcionou perfeitamente e agora posso ver outros problemas no meu roteiro!

    
por 17.11.2017 / 11:38