Não consigo executar meu script sh na inicialização em rc.local

0

Aqui está meu /etc/rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sh /home/ubuntu/Desktop/camset.sh
exit 0

Quando eu faço cd em / etc e executo /home/ubuntu/Desktop/camset.sh, o script roda bem. O script apenas define filtros de câmera com v4l2-ctl. É possível que a câmera ainda não esteja conectada / configurada quando o script é executado? Eu também fiz questão de tornar o script executável com chmod.

ATUALIZAÇÃO: Aqui está o meu novo arquivo rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/usr/bin/screen -dmS autostart bash -c '/home/ubuntu/Desktop/camset.sh'
deflog on
logfile /tmp/screenlog_$USER_.%H.%n.%Y%m%d-%0c:%s.%t.log
exit 0

As únicas coisas no diretório tmp / são: config-err-sHJlFD unity_support_test.0

    
por user215687 12.02.2017 / 22:17

1 resposta

0

Pode haver muitas razões e não sabemos o que seu script está fazendo. O que eu faria é adicionar alguns registros para descobrir o que está acontecendo.

Veja, por exemplo: Onde está o arquivo de log de rc.local?

A outra abordagem (que eu prefiro) é usar o comando de tela para iniciar o processo em sua sessão de terminal própria.

Pré-requisito:

apt-get install screen

Então você pode adicionar algo assim ao seu arquivo local.rc

/usr/bin/screen -dmS autostart bash -c '/home/ubuntu/Desktop/camset.sh'

Para manter um registro do console de tela, crie também um arquivo /root/.screenrc assim:

deflog on
logfile /tmp/screenlog_$USER_.%H.%n.%Y%m%d-%0c:%s.%t.log

Após a reinicialização, você pode verificar o arquivo de log (neste exemplo, ele é armazenado em / tmp).

PS: você pode ter que adicionar um "e" comercial (&) após o seu script se ele não retornar, isso pode impedir que o computador inicialize.

Note que rc.local será executado como root.

    
por 12.02.2017 / 23:14