Actualmente hay dos formas diferentes de iniciar el software como un servicio en Ubuntu. Un servicio se define aquí como un programa ejecutado por el sistema en segundo plano, en contraposición a uno iniciado y ejecutado directamente por el usuario.
La forma tradicional de iniciar servicios en Linux era colocar un script en /etc/init.d, y luego usar el update-rc.d
(o en las distros basadas en RedHat, chkconfig
) para activarlo/desactivarlo. Este comando, btw, utiliza una lógica ligeramente complicada para crear enlaces simbólicos en /etc/rc#.d, que controlan el orden de inicio de los servicios. Si ejecutas ls /etc/rc2.d
se puede ver la orden de que los servicios se maten (K##xxxx) y se inicien (S##xxxx).
El problema con eso era que al arrancar el sistema, todo debía hacerse en serie, una cosa tras otra, haciendo que el sistema boot fuera realmente lento. Se hicieron intentos de paralelizar esto, pero fueron aleatorios y difíciles de aprovechar al máximo. Esta fue la principal razón por la que se creó Upstart.
Upstart utiliza archivos de definición de trabajo en /etc/init para definir en qué eventos debe iniciarse un servicio. Así, mientras el sistema se está iniciando, el upstart procesa varios eventos, y luego puede iniciar múltiples servicios en paralelo. Esto les permite utilizar plenamente los recursos del sistema, por ejemplo, iniciando un servicio de disco mientras se ejecuta otro servicio de CPU, o mientras la red espera a que se asigne una dirección IP dinámica.
Puedes ver todos los archivos de trabajo de los recién llegados ejecutando ls /etc/init/*.conf
Permítanme parar aquí y decir que si no saben lo que es un servicio, o lo que hace, ¡NO lo deshabiliten!
No todos los servicios han sido convertidos en advenedizos. Mientras trabajaba en el equipo de servidores de Canonical durante los últimos meses, he trabajado en una serie de archivos de trabajo convertidos, y lo mejor es que permite deshacerse de toda la "magia" de script y poner unos cuantos comandos aquí y allá para definir exactamente cómo iniciar el servicio, y nada más. Pero por ahora, sólo un puñado de servicios de red tradicionales, como el calamar y la samba, han sido convertidos.
Para saber si un servicio está basado en el arranque, puedes ejecutar el comando de estado:
status servicename
Si es un trabajo de principiante, mostrará esto:
$ status statd
statd start/running, process 942
Pero si no es así, verás algo más parecido a esto:
$ status apache2
status: Unknown job: apache2
En este caso, apache2 no se ha convertido en un advenedizo. Así que, para desactivar apache2 sólo tienes que ejecutar
sudo update-rc.d apache2 disable
sudo service apache2 stop
Las definiciones de trabajo de los principiantes no tienen un comando update-rc.d. Para deshabilitar el trabajo, es necesario editar el archivo de trabajo directamente para deshabilitarlo. Hay dos formas de hacerlo.
Si quieres seguir siendo capaz de iniciarlo manualmente, entonces tienes que comentar el ' start on
condición. Digamos que quieres instalar Samba, pero no que se inicie automáticamente aquí está su archivo de trabajo (en natty):
description "SMB/CIFS File Server"
author "Steve Langasek <steve.langasek@ubuntu.com>"
start on local-filesystems
stop on runlevel [!2345]
respawn
pre-start script
RUN_MODE="daemons"
[ -r /etc/default/samba ] && . /etc/default/samba
[ "$RUN_MODE" = inetd ] && { stop; exit 0; }
install -o root -g root -m 755 -d /var/run/samba
end script
exec smbd -F
Para desactivarlo, puedes poner un # delante de la start on local-filesystems
'. Ten en cuenta que aunque no se inicie de nuevo en boot, todavía tienes que detenerlo esta vez con
sudo service smbd stop
Sin embargo, si no quieres que empiece nunca, te sugiero que retires el paquete. Si, sin embargo, quieres que se instale, pero no que se inicie, también puedes hacerlo:
mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled
Empezando con la versión de upstart que será en 11.04, hay una nueva palabra clave que desactiva el 'start on'
y 'stop on'
estrofas, es 'manual
'. Así que otra forma de desactivar el servicio a partir del 11.04 es hacerlo:
command using sudo
echo 'manual' | sudo tee /etc/init/mysql.override
command from root shell
echo manual >> /etc/init/mysql.override
Y, con suerte muy pronto, podrás crear un archivo de "anulación" para desactivar un servicio sin editar la definición del trabajo en absoluto, con sólo poner la palabra clave "manual" en él.
1 votos
Para la creación de redes, consulte: askubuntu.com/questions/230698/
0 votos
Este sería útil para los que están atascados en Fedora 12 y han aterrizado aquí. En caso de que linkrot
chkconfig
es lo que está buscando.3 votos
Tenga en cuenta que la respuesta para Ubuntu 14.04 sigue sin aparecer aquí.
3 votos
@MarcelloNuccio: A partir de Ubuntu 15.04, Upstart ha quedado obsoleto en favor de Systemd.
0 votos
Los programas de arranque automático se configuran en
autostart
manifiestos o en*.service
en varios lugares, así como eninit.d
ocrontab
. Ver: unix.stackexchange.com/a/525845/43233