Como posso configurar um serviço para ser executado na inicialização

244

Eu tenho um daemon que funciona bem se eu iniciá-lo manualmente com o servicecomando:

ricardo@ricardo-laptop:~$ sudo service minidlna start                   
 * Starting minidlna minidlna                                                              [ OK ] 

mas não está configurado para iniciar automaticamente quando o PC é reiniciado.

Como posso configurá-lo para iniciar automaticamente, mesmo que ninguém esteja conectado ao PC?

Ricardo Reyes
fonte
@ user154721 Que argumentos você forneceu ao update-rc.d para que a inicialização automática funcionasse? Eu tentei várias opções, mas não tive sorte.
BennyTheBen
Os programas de inicialização automática são configurados em autostartmanifestos ou em *.servicearquivos em vários locais, assim como em init.dou crontab. Veja: unix.stackexchange.com/a/525845/43233
Noam Manos

Respostas:

281
sudo update-rc.d minidlna defaults

Isso deve adicionar o serviço ao sistema de inicialização automática. Mas se você receber:

System start/stop links for /etc/init.d/minidlna already exist.

Faça o comando

sudo update-rc.d minidlna enable

PS : Para mais detalhes, consulte a página de manual do update-rc.d digitando o comandoman update-rc.d

LassePoulsen
fonte
7
obrigado, mas e se eu receber essa saída ao executar esse comando?:System start/stop links for /etc/init.d/minidlna already exist.
Ricardo Reyes
1
se o minidlna não gravar em nenhum arquivo de log, você não o encontrará em nenhum lugar. Talvez ele falhe porque não há conexão de rede quando é iniciada? Tente examinar a configuração se for possível ativar a depuração e / ou o log para descobrir o que está errado.
LassePoulsen 25/10/10
8
@RicardoReyes usa sudo update-rc.d -f minidlna removepara remover os links existentes.
Dogweather
5
Estou ficando abaixo de erro update-rc.d: /etc/init.d/usermanage: arquivo não existe
Rizwan Patel
2
Eu também estou, tenho o mesmo erro update-rc.d: /etc/init.d/mongod: file does not exist. Então, sudo systemctl enable mongod.servicetrabalhou para mim.
explorer
36

Às vezes, você precisa executar um script no processo de inicialização, por exemplo, executar uma configuração do iptables no processo de inicialização. Portanto, você não precisa executar o script manualmente a cada reinicialização.

Você pode executar seu script no processo de inicialização no Ubuntu, adicionando-o ao /etc/init.d/rc.localarquivo. Veja os passos abaixo.

  1. Abra o /etc/rc.localarquivo com este comando:

    vim /etc/rc.local
    
  2. Adicione seu script que você deseja executar no processo de inicialização, por exemplo:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. Revise os comentários incluídos nesse arquivo e verifique se a saída 0 está no final.

  4. Salve os arquivos. E seu script será executado no processo de inicialização.

hhlp
fonte
2
Comentários de /etc/init.d/rc.local no Ubuntu 12.04 dizem "Descrição curta: Execute /etc/rc.local se existir", então talvez seja melhor adicionar os scripts ao /etc/rc.local?
Sanghyun Lee
Esse método emitirá o comando "shutdown" para o serviço ou apenas mataria o processo após o encerramento do SO?
Vadim Chekan
Vadim, rc.local é apenas executado na inicialização, nada é alcançado no desligamento. O processo provavelmente seria morto pelo sistema operacional no desligamento.
Weboide
1
FYI: A diferença entre rc.localvs adicionando-o ao init, é que rc.local é executado no final da seqüência de inicialização de inicialização, e não como parte dela
BobTuckerman
35
  • Para iniciar um daemon na inicialização:

    update-rc.d service_name defaults
    
  • Remover:

    update-rc.d -f service_name remove
    

padrões => níveis de execução padrão 2,3,4 e 5

Exemplo:

update-rc.d tomcat7 defaults
Lakal Malimage
fonte
1
Quando eu faço esse comando, recebo "Os links de início / parada do sistema para /etc/init.d/tomcat7 já existem". no entanto, quando eu reinicializo, ele não inicia o tomcat, sempre preciso fazer o "serviço tomcat7 start".
John pouco
no meu caso, o padrão sudo update-rc.d myservice sempre é concluído sem saída e o serviço não inicia na inicialização ou com o serviço sudo myservice start, que também é concluído silenciosamente. sudo /etc/init.d/myservice início funciona no entanto
axk
13

Desde o Ubuntu 15.10 (resp. Debian 8 "jessie"), você precisa usar o seguinte comando para configurar seu serviço minidlnapara ser executado na inicialização:

sudo systemctl enable minidlna.service

E para desativá-lo novamente, inicie no momento da inicialização:

sudo systemctl disable minidlna.service

Isso funciona com todas as referências de nome de serviço que você pode encontrar ls /lib/systemd/system/*.service.

tanius
fonte