scripts de inicialização automática no debian

scripts de inicialização automática no debian

Eu tenho um serviço que instalo assim:

install -m 755 init_script /etc/init.d/spacenavd
cd /etc/rc2.d
ln -s ../init.d/spacenavd S99spacenavd

o que o init_script faz é iniciar o script:

/usr/local/bin/spacenavd -v

Tudo isso funciona bem e permite que o serviço seja iniciado automaticamente na inicialização. No entanto, estou tendo problemas para executar outro script na inicialização que usa o serviço spacenavd. Este script funciona normalmente quando eu o executo manualmente após o login. No entanto, executá-lo na inicialização não funciona quando eu o coloco em rc.local.

Eu faço o seguinte em rc.local:

cd /home/filedirec
sudo ./my_script &

Isso funciona às vezes e às vezes não. Não consigo determinar qual é a causa. Qual é uma boa maneira de solucionar problemas?

Responder1

Déjà Vu.

Sudo é um programa interativo que exige que você forneça uma senha para executar um comando como root (ou outro usuário), caso você não tenha inserido suas credenciais recentemente. Orc.localO script não está anexado ao seu console, então você nunca o verá solicitando a senha.

Orc.localscript também já está sendo executado como root, então você deve remover osudocomando dele.

Melhor ainda seria simplesmente substituir tudo o que você adicionou por:/home/filedirec/meu_script(ou/home/filedirec/my_script &se necessário). Usar o caminho absoluto tornará mais rápido e fácil ver exatamente o que orc.localscript está fazendo se precisar ser revisado mais tarde,cde similares são geralmente mais adequados para shells interativos.

Responder2

Uma coisa que você pode fazer é iniciar seu script em um separadotelasessão.

Por exemplo, seu arquivo rc.local poderia ser assim:

/usr/bin/screen -dmS my_script bash -c '/home/filedirec/my_script'

Então você pode facilmente 'reconectar' a tela após a inicialização e ver o que está acontecendo com o seu script. Também é possível registrar a saída em um arquivo.

Se o comando screen não estiver disponível em seu sistema:sudo apt-get install screen

Um tutorial com fotos: tela: Mantenha seus processos em execução apesar de uma conexão perdida

informação relacionada