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?


@ 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


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.


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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.