Como iniciar um aplicativo automaticamente na inicialização

21

Eu sou novo no Linux & ansioso para iniciar a aplicação (que alterna um led a cada 10 seg). Eu escrevi o programa aplicativo & está funcionando bem, mas agora quero iniciá-lo automaticamente na inicialização.

A documentação aqui diz para copiar o script de inicialização para o diretório /etc/init.d e fazer um link simbólico para o script copiado no diretório rc.d .

Qual deve ser a extensão e o nome desses arquivos de script? Podemos adicionar manualmente o link simbólico em rc.d ou há algum procedimento específico para isso?

Alguma sugestão de como alcançá-lo?

    
por gorge 28.11.2012 / 04:21

4 respostas

18

Este é o excerto do link que parece responder à sua pergunta.

Observação: no script de exemplo abaixo, basta adicionar uma chamada à seção " start) " para realmente iniciar seu programa. Você pode testar a funcionalidade do script sem reinicializar o sistema: chame-o com o caminho completo e forneça um parâmetro de " start " ou " stop "

Aqui vai:

O Debian usa um sistema init tipo Sys-V para executar comandos quando o nível de execução do sistema é alterado - por exemplo, no tempo de inicialização e encerramento.

Se desejar adicionar um novo serviço para iniciar quando a máquina for inicializada, você deverá adicionar o script necessário ao diretório /etc/init.d/ . Muitos dos scripts já presentes nesse diretório darão um exemplo do tipo de coisa que você pode fazer.

Aqui está um script muito simples que é dividido em duas partes, código que sempre é executado e código que é executado quando chamado com "start" ou "stop".

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/blah

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script blah "
    echo "Could do more here"
    ;;
  stop)
    echo "Stopping script blah"
    echo "Could do more here"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0

Depois de salvar o arquivo no local correto, verifique se ele é executável executando " chmod 755 /etc/init.d/blah ".

Depois, você precisa adicionar os links simbólicos apropriados para fazer com que o script seja executado quando o sistema for desativado ou aparecer.

A maneira mais simples de fazer isso é usar o comando específico do Debian update-rc.d :

root@skx:~# update-rc.d blah defaults
 Adding system startup for /etc/init.d/blah ...
   /etc/rc0.d/K20blah -> ../init.d/blah
   /etc/rc1.d/K20blah -> ../init.d/blah
   /etc/rc6.d/K20blah -> ../init.d/blah
   /etc/rc2.d/S20blah -> ../init.d/blah
   /etc/rc3.d/S20blah -> ../init.d/blah
   /etc/rc4.d/S20blah -> ../init.d/blah
   /etc/rc5.d/S20blah -> ../init.d/blah
    
por 28.11.2012 / 22:23
2

A melhor maneira é verificar a origem do pacote de sua distribuição para um serviço regular do sistema, por exemplo, para o OpenSSH - você verá quais são as boas práticas. Afinal, uma das razões por trás do código aberto é poder aprender com as fontes.

    
por 28.11.2012 / 16:33
2

Use o Supervisor, um programa eficaz que gerencia e registra os aplicativos de inicialização com argumentos. Saiba mais no link e (Siga as instruções de instalação.

Crie um arquivo conf em /etc/supervisor/conf.d/{PROGRAM_NAME}.conf e Aqui está o código,

[program:{PROGRAM_NAME}]
command=/usr/bin/{PROGRAM_NAME} -arg1 -arg2
autostart=true  
autorestart=true  
stderr_logfile=/var/log/supervisor/{PROGRAM_NAME}.err.log  
stdout_logfile=/var/log/supervisor/{PROGRAM_NAME}.out.log  

Em seguida, execute a partir da linha cmd:

supervisorctl reload

    
por 30.01.2018 / 06:13
0

Usar crontab é muito mais fácil.

Use crontab -e para editar o crontab do usuário.
Adicione a seguinte linha no final:

@reboot <command>

Exemplos:

  • @reboot my_script.sh
  • @reboot python my_script.py arg1 arg2

Por fim, use contab -l para garantir que seu script foi adicionado à lista.

    
por 07.10.2018 / 10:47