Como posso fazer o “rc.local” rodar na inicialização?

58

Eu tenho um script que gostaria de executar quando meu sistema for iniciado. Eu coloquei em "rc.local", mas não funciona. Como posso ativá-lo para ser executado na inicialização?

    
por pedroo 28.10.2010 / 01:35

4 respostas

39

Você pode executar seu script manualmente? Se não, é um problema com esse script; caso contrário, veja mais em rc.local. (Se esse script precisar ser executado como root, você precisará usar o sudo para executá-lo manualmente.)

Verifique se /etc/rc.local é executável e se o script que ele chama também é executável.

$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 419 2010-08-27 11:26 /etc/rc.local

Certifique-se de que rc.local tenha uma linha shebang (que é o padrão):

$ head -n1 /etc/rc.local
#!/bin/sh -e
    
por Roger Pate 28.10.2010 / 03:15
45

No meu caso, nenhuma das instruções foi uma solução perfeita. Se você fosse tão azarado quanto eu, tente este detalhado

  1. Coloque todo o seu código de execução em um arquivo de texto separado com um nome arbitrário, como foo.sh e salve-o em um lugar arbitrário.
  2. Adicionar

    #!/bin/sh
    

    como primeira linha do seu código.

  3. Tente executar seu foo.sh por

    sudo foo.sh
    

    para verificar se não há erros.

  4. Forneça seu script /etc/rc.local com o caminho completo e o nome do seu script criado após o comando sh

    sh '/path/to/your/script/foo.sh'
    
  5. Lembre-se de colocar a linha acima antes da última linha de código

    exit 0
    

    no final do script /etc/rc.local.

  6. Verifique se a primeira linha do /etc/rc.local é

    #!/bin/sh -e
    
  7. Faça seu executável /etc/rc.local caso ainda não seja executável

    sudo chown root /etc/rc.local
    sudo chmod 755 /etc/rc.local
    
  8. Verifique se tudo funciona bem, executando

    sudo /etc/init.d/rc.local start
    
  9. Teste o reinício do seu sistema.
por shvahabi 06.01.2014 / 18:36
17

Em versões mais recentes do Ubuntu systemd é usado e /etc/rc.local não é carregado sempre por padrão.

Verifique se o serviço de compatibilidade está carregado com

systemctl status rc-local.service

Se ele contiver ativo (saiu) , sua configuração parece bem e você pode ter outro erro no seu arquivo /etc/rc.local (isso pode ser um comando que falha por exemplo).

    
por rubo77 21.04.2016 / 10:06
3

2 sugestões.

  1. Verifique se o arquivo de script de destino também está marcado como executável.
  2. O script de destino está executando um comando sudo ? Nesse caso, você pode querer fornecer a senha do sudo para ele.

Meu mal. Basta verificar um então. Obrigado pela correção enzotib:)

    
por Ankit 29.06.2011 / 23:12