autostarting scripts in debian

3

Eu tenho um serviço que eu 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. Esse script funciona normalmente quando eu o executo manualmente após o login. No entanto, executá-lo na inicialização como 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. Eu não consigo determinar qual é a causa. O que é uma boa maneira de solucionar problemas?

    
por mugetsu 02.10.2013 / 00:36

2 respostas

1

Deja Vu.

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

O script rc.local também já está sendo executado como root, então você deve remover o comando sudo dele.

Melhor ainda seria simplesmente substituir tudo o que você adicionou: / home / filedirec / my_script (ou / home / filedirec / my_script & se necessário). Usar o caminho absoluto tornará mais rápido e fácil ver exatamente o que o script rc.local está fazendo, se precisar ser revisado posteriormente, cd e similares são geralmente melhores adequado para shells interativos.

    
por 07.10.2013 / 21:37
0

Uma coisa que você pode fazer é iniciar seu script em uma sessão separada da tela .

Por exemplo, seu arquivo rc.local poderia ter esta aparência:

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

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

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

Um tutorial com fotos: tela: mantenha seus processos em funcionamento apesar de uma conexão perdida

    
por 29.09.2016 / 23:53