¿Cómo puedo configurar un servicio para que se ejecute al inicio?

244

Tengo un demonio que funciona bien si lo inicio manualmente con el servicecomando:

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

pero no está configurado para iniciarse automáticamente cuando la PC se reinicia.

¿Cómo puedo configurarlo para que se inicie automáticamente, incluso si nadie ha iniciado sesión en la PC?

Ricardo Reyes
fuente
@ user154721 ¿Qué argumentos le dio a update-rc.d para que el inicio automático funcione? He probado varias opciones pero no he tenido suerte.
BennyTheBen
Los programas de inicio automático se configuran en autostartmanifiestos o en *.servicearchivos en varias ubicaciones, así como en init.do crontab. Ver: unix.stackexchange.com/a/525845/43233
Noam Manos

Respuestas:

281
sudo update-rc.d minidlna defaults

Esto debería agregar el servicio al sistema de inicio automático. Pero si obtienes:

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

Hacer el comando

sudo update-rc.d minidlna enable

PD : para obtener más detalles, consulte la página de manual de update-rc.d escribiendo el comandoman update-rc.d

LassePoulsen
fuente
77
gracias, pero ¿y si obtengo este resultado cuando ejecuto ese comando ?:System start/stop links for /etc/init.d/minidlna already exist.
Ricardo Reyes
1
si minidlna no escribe en ningún archivo de registro, no lo encontrará en ningún lado. ¿Tal vez falla porque no hay conexión de red cuando se inicia? Intente ver la configuración si es posible activar la depuración y / o el registro para descubrir qué está mal.
LassePoulsen
8
@RicardoReyes utiliza sudo update-rc.d -f minidlna removepara eliminar los enlaces existentes.
Dogweather
55
Me aparece el siguiente error update-rc.d: /etc/init.d/usermanage: el archivo no existe
Rizwan Patel
2
También tengo el mismo error update-rc.d: /etc/init.d/mongod: file does not exist. Entonces, sudo systemctl enable mongod.servicetrabajó para mí.
explorador
36

A veces necesita ejecutar un script en el proceso de arranque, por ejemplo, ejecutar una configuración de iptables en el proceso de arranque. Por lo tanto, no tiene que ejecutar el script manualmente cada vez que se reinicia.

Puede ejecutar su script en el proceso de arranque en Ubuntu agregándolo al /etc/init.d/rc.localarchivo. Mira los pasos a continuación.

  1. Abrir /etc/rc.localarchivo con este comando:

    vim /etc/rc.local
    
  2. Agregue allí el script que desea ejecutar en el proceso de arranque, por ejemplo:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. Revise los comentarios incluidos en ese archivo y asegúrese de que la salida 0 esté al final.

  4. Guarda los archivos. Y su script se ejecutará en el proceso de arranque.

hhlp
fuente
2
Los comentarios de /etc/init.d/rc.local en Ubuntu 12.04 dicen "Descripción breve: Ejecute /etc/rc.local si existe", ¿quizás sería mejor agregar los scripts a /etc/rc.local?
Sanghyun Lee
¿Este método emitirá el comando "shutdown" al servicio o simplemente matará el proceso al apagar el sistema operativo?
Vadim Chekan
Vadim, rc.local solo se ejecuta en el arranque, no se logra nada en el apagado. El proceso probablemente sería eliminado por el sistema operativo en el apagado.
Weboide
1
FYI: La diferencia entre rc.localvs agregarlo a init, es que rc.local se ejecuta al final de la secuencia de inicio de init, en lugar de como parte de ella
BobTuckerman
35
  • Para iniciar un demonio al inicio:

    update-rc.d service_name defaults
    
  • Para eliminar:

    update-rc.d -f service_name remove
    

valores predeterminados => niveles de ejecución predeterminados 2,3,4 y 5

Ejemplo:

update-rc.d tomcat7 defaults
Lakal Malimage
fuente
1
Cuando ejecuto este comando, obtengo "Los enlaces de inicio / detención del sistema para /etc/init.d/tomcat7 ya existen". sin embargo, cuando reinicio, no se inicia tomcat, siempre tengo que hacer "service tomcat7 start".
John Little
en mi caso, sudo update-rc.d myservice default siempre se completa sin salida y el servicio no se iniciará en el arranque o con sudo service myservice start, que también se completa en silencio. sudo /etc/init.d/myservice start funciona sin embargo
axk
13

Desde Ubuntu 15.10 (resp. Debian 8 "jessie"), debe usar el siguiente comando para configurar su servicio minidlnapara que se ejecute al inicio:

sudo systemctl enable minidlna.service

Y para deshabilitarlo nuevamente desde el momento del arranque:

sudo systemctl disable minidlna.service

Esto funciona con todas las referencias de nombre de servicio que puede encontrar ls /lib/systemd/system/*.service.

Tanius
fuente