Ubuntu 9.10: como faço para solucionar problemas de um script de inicialização que parece não rodar?

2

Eu criei um script basico 'foo'. Eu fiz esse script executável com

chmod+x 

e adicionou a inicialização executando

sudo update-rc.d foo defaults 80

Apesar disso, parece não estar funcionando na inicialização. Existe uma maneira de ter meu script ecoar mensagens para um log? Ou há algum log que registraria eventos / erros para isso?

atm, sinto que estou voando às cegas e realmente não sei como solucionar isso.

Conforme solicitado, aqui está o conteúdo do meu script:

#!/bin/bash
modprobe uinput
/home/dane/dev/mangler/run.sh /home/dane/dev/mangler/dane/keys.js

o comando run.sh executa o programa kbd-mangler.exe. Ao executar o seguinte em um terminal gnome, ele funciona:

~/$ sudo bash custom_keys.sh
    
por Dane O'Connor 26.03.2010 / 19:39

5 respostas

1

No início do seu script, adicione esta linha:

exec > /tmp/debug-my-script.txt 2>&1

Reinicie. Agora olhe para esse arquivo em / tmp - ele deve informar o que está acontecendo.

A propósito, nos scripts init.d eu costumo usar comandos com caminho completo (/ sbin / modprobe). Eu tenho sido queimado tantas vezes pelo PATH restrito usado por esses scripts, eu não faço suposições agora. :)

A propósito, bons links de programação Bash:

link

link

link

    
por 26.03.2010 / 21:47
3

Dê uma olhada no comando logger .

    
por 26.03.2010 / 20:00
1

O script funciona se você o executar com o sudo? Se o script foi configurado corretamente, o erro mais comum que vi foi relacionado a não configurar o ambiente adequadamente.

Por exemplo, é uma boa prática configurar o PATH explicitamente no início do script ou usar o caminho completo para todos os comandos executados.

Também é o nível 80 que você realmente precisa? Você está dependendo de algo que ainda não começou?

O seu script verifica adequadamente os níveis de erros das coisas que você executa e responde apropriadamente. Bons scripts e programação requerem que você observe e manipule os erros adequadamente.

Coloque algumas frases echo status em seu script e observe com cuidado enquanto o sistema inicializa. Usar o logger ajuda já que você pode enviar a saída para o syslog.

Você pode adicionar set -x à primeira linha do script e sleep 120 como a última linha e, em seguida, procurar erros. Isso basicamente fará com que todas as instruções sejam reproduzidas em sua tela e, em seguida, aguardará alguns minutos para que você tenha a oportunidade de ler e identificar problemas.

    
por 26.03.2010 / 20:08
1

Só para adicionar ao que foi sugerido.

Eu também verifico que o symlink /etc/rc2.d/S80foo foi criado e está vinculado corretamente. Se o arquivo foo não existisse, o update-rc.d deveria ter lhe dado um erro, mas não faz mal verificar novamente.

    
por 26.03.2010 / 20:11
0

Você pode usar o comando logger para adicionar entradas aos arquivos de log:

logger -i "Foo Starting"
    
por 26.03.2010 / 20:01