Eu sou novo no Linux e estou ansioso para iniciar o aplicativo (que alterna um led a cada 10 s). Eu escrevi o programa de aplicação e está funcionando bem, mas agora quero iniciá-lo automaticamente na inicialização.
A documentação aqui diz para copiar o script de inicialização no /etc/init.d
diretório e criar um link simbólico para o script copiado no rc.d
diretório.
Qual deve ser a extensão e o nome desses arquivos de script? Podemos adicionar manualmente o link simbólico rc.d
ou existe algum procedimento específico para isso?
Alguma sugestão de como conseguir isso?
start-stop-daemon
lida com isso melhor (embora seja preferível que o próprio programa daemonize). Que distro você está usando? Fora dos tipos MIME da área de trabalho, as extensões de arquivo não fazem sentido no * nix e é preferível que os executáveis não tenham um.cron
.Respostas:
Aqui está o trecho de http://www.debian-administration.org/articles/28 que parece responder à sua pergunta.
Nota: 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 reiniciar o sistema: chame-o com o caminho completo e dê a ele um parâmetro "start
" ou "stop
"Aqui vai:
O Debian usa um sistema init como o Sys-V para executar comandos quando o nível de execução do sistema muda - por exemplo, no momento da inicialização e do desligamento.
Se você deseja adicionar um novo serviço para iniciar quando a máquina inicializar, adicione o script necessário ao diretório
/etc/init.d/
. Muitos dos scripts já presentes nesse diretório fornecem um exemplo do tipo de ação que você pode fazer.Aqui está um script muito simples, dividido em duas partes: código que sempre é executado e código que é executado quando chamado com "start" ou "stop".
Depois de salvar seu arquivo no local correto, verifique se ele é executável executando "
chmod 755 /etc/init.d/blah
".Em seguida, você precisa adicionar os links simbólicos apropriados para fazer com que o script seja executado quando o sistema for desativado ou for ativado.
A maneira mais simples de fazer isso é usar o comando específico do Debian
update-rc.d
:fonte
systemd
muitas coisas, inclusive na configuração de inicialização. Usesystemctl
para controlar e configurarsystemd
.A melhor maneira é verificar a origem do pacote da 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 os fontes.
fonte
Use o Supervisor, um programa eficaz que gerencia e registra os aplicativos de inicialização com argumentos. Saiba mais em http://supervisord.org/running.html 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,Em seguida, execute a partir da linha cmd:
supervisorctl reload
fonte
Usar
crontab
é muito mais fácil.Use
crontab -e
para editar o crontab do usuário.Adicione a seguinte linha no final:
Exemplos:
@reboot my_script.sh
@reboot python my_script.py arg1 arg2
Por fim, use
crontab -l
para garantir que seu script foi adicionado à lista.fonte
Versões mais recentes do suporte ao linux
systemd
(como disse @AlexanderShcheblikin). Possui mais recursos e é mais portátil que a solução específica do debian.Por favor, leia este realmente ótimo guia .
Aqui está uma referência rápida do mínimo necessário:
myscript.sh
) com permissões executáveis.myservice.service
) com extensão ".service"/etc/systemd/system
com permissões 644 que contém o comando para executar o script. Por exemplo,:
sudo systemctl enable myservice
para permitir que ele inicie na inicialização.fonte