869 votos

¿Cómo se activan o desactivan los servicios?

Leí acerca de cómo habilitar y deshabilitar servicios en Ubuntu y parece que hay diferentes posibilidades para administrarlos.

El primer método que encontré es update-rc.d para añadir nuevos servicios a la puesta en marcha, que tiene como objetivo /etc/init.d y su contenido.

La otra que encontré es para editar .conf archivos en el /etc/init carpeta.

¿Cuál es la forma recomendada de activar / desactivar / añadir servicios y por qué?

¿Podría dar un breve ejemplo paso a paso de cómo añadir un servicio en Ubuntu y activarlo y desactivarlo?

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í.

902voto

Bob Puntos 790

Hay servicios que pueden ser activados/desactivados usando la GUI (como el startup aplicación) y luego otras formas de hacer lo mismo a través de la terminal.

Para la Terminal tienes varias opciones. Abrir una terminal (Escriba "terminal" en el guión por ejemplo y ábrala) y siga leyendo:

Habilitar / Deshabilitar un servicio

Para evitar que un servicio se inicie o se detenga de forma permanente, es necesario:

echo manual | sudo tee /etc/init/SERVICE.override

donde la estrofa manual impedirá que Upstart cargue automáticamente el servicio en el próximo boot. Cualquier servicio con el .override final tendrá prioridad sobre el archivo de servicio original. Sólo podrá iniciar el servicio manualmente después. Si no quieres esto, simplemente borra el .override . Por ejemplo:

echo manual | sudo tee /etc/init/mysql.override

Pondrá el servicio de MySQL en manual modo. Si no quieres esto, después puedes simplemente hacer

sudo rm /etc/init/mysql.override

y reiniciar para que el servicio se inicie automáticamente de nuevo. Por supuesto que para habilitar un servicio, la forma más común es instalarlo. Si instalas Apache, Nginx, MySQL u otros, se inician automáticamente al terminar la instalación y se iniciarán cada vez que el ordenador se inicie. Deshabilitarlo como se ha mencionado anteriormente hará que el estado del servicio manual .

Servicios de habilitación/deshabilitación temporal

Para detener y poner en marcha los servicios temporalmente (No los habilita / deshabilita para futuras botas), puedes escribir service SERVICE_NAME . Por ejemplo:

  • sudo service apache2 stop (Will STOP el servicio Apache hasta que se reinicie o hasta que se vuelva a iniciar).

  • sudo service apache2 start (Will COMIENZO el servicio apache asumiendo que fue detenido antes).

  • service apache2 status (Le dirá el ESTADO del servicio, si está habilitado/ejecutado de inhabilitado/no ejecutado.)

  • sudo service apache2 restart (Will RESTART el servicio. Esto se usa más comúnmente cuando se ha cambiado, un archivo de configuración. Por ejemplo en este caso, si has cambiado una configuración de PHP o una configuración de Apache. Reiniciar le ahorrará tener que parar/empezar con 2 líneas de comando)

  • service apache2 (En este caso, ya que no mencionó la ACCIÓN a ejecutar para el servicio, por lo que le mostrará todas las opciones disponibles para ese servicio específico.)

Esto por supuesto puede variar dependiendo del servicio, por ejemplo, con MySQL sólo mencionaría que le falta un parámetro. Para otros servicios como el servicio de red, mencionaría la pequeña lista de todas las opciones disponibles.

UPSTART

Si quisiéramos usar el modo oficial de Upstart (Nota: por el momento, no todos los servicios han sido convertidos a Upstart), podríamos usar los siguientes comandos:

status SERVICE - Esto nos dirá si un servicio convertido está funcionando o no. Tengan en cuenta que esto está desaprobado en favor de start , stop , status & restart . También nos dirá si un servicio aún no se ha convertido en advenedizo:

Un servicio convertido típicamente daría como resultado el estado actual (Iniciando, Ejecutando, Deteniendo...) y el ID del proceso. Un servicio no convertido daría un error sobre un trabajo desconocido .

Algunos atajos pueden funcionar sólo con el service comando de arriba pero no con los comandos de abajo a menos que se conviertan al 100% en servicios de arranque:

  • COMIENZO - sudo start mysql

  • STOP - sudo stop mysql

  • RESTART - sudo restart mysql

  • ESTADO - sudo status smbd

SISTEMA

A partir de Ubuntu 15.04, Upstart será desaprobado en favor de Systemd. Con Systemd para gestionar los servicios podemos hacer lo siguiente:

systemctl start SERVICE.service - Úsalo para iniciar un servicio. No persiste después de reiniciar

systemctl stop SERVICE.service - Úsalo para detener un servicio. No persiste después de reiniciar

systemctl restart SERVICE.service - Úsalo para reiniciar un servicio

systemctl reload SERVICE.service - Si el servicio lo soporta, recargará los archivos de configuración relacionados con él sin interrumpir ningún proceso que esté utilizando el servicio.

systemctl status SERVICE.service - Muestra el estado de un servicioDice si un servicio se está ejecutando actualmente.

systemctl enable SERVICE.service - Enciende el servicio, en el próximo reinicio o en el próximo evento de inicio. Persiste después del reinicio.

systemctl disable SERVICE.service - Desactiva el servicio en el próximo reinicio o en el próximo evento de parada. Persiste después del reinicio.

systemctl is-enabled SERVICE.service - Comprueba si un servicio está configurado para iniciarse o no en el próximo reinicio.

systemctl is-active SERVICE.service - Compruebe si un servicio está actualmente activo.

systemctl show SERVICE.service - Mostrar toda la información sobre el servicio.

0 votos

¿Necesita añadir .service a todas las órdenes? systemctl mongod status funcionó bien.

0 votos

@DanDascalescu no, pero déjame aclararlo ahí.

4 votos

¿Debe colocarse el archivo .override en /etc/init.d/, es decir, donde se coloca el servicio?

367voto

Jeremy Ruten Puntos 59989

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.

0 votos

Genial, gracias. Por fin he descubierto cómo detener un par de "servicios misteriosos", y lo suficiente como para poder empezar a experimentar con servicios por mi cuenta.

20 votos

Parece que la 11.04 también tiene anulación. Así que echo manual >> /etc/init/<service>.override es preferible ya que deja el archivo .conf original intacto. De todas formas, es una pena que una activación/desactivación tan básica haya tardado 3 años en desarrollarse, y no haya una interfaz gráfica de usuario para ello.

3 votos

update-rc.d es lo que realmente importa

130voto

atenz Puntos 8449

Intenta usar sysv-rc-conf

sudo apt-get install sysv-rc-conf

y para empezar a gestionar los servicios, ejecutar

sudo sysv-rc-conf

Lo que hará que aparezca una ventana interactiva como esta

enter image description here

Puede seguir navegando por las páginas utilizando Ctrl+n para la página siguiente y Ctrl+p para la página anterior. Puede activar y desactivar los servicios seleccionando ESPACIO en los niveles deseados.

Otra alternativa sería Jobs-Admin instalando a través de

sudo apt-get install jobs-admin

Lo que también proporciona una interfaz gráfica de usuario como esta

enter image description here

Para mostrar más trabajos, tienes que marcar el Mostrar los trabajos protegidos de su menú.

Y la tercera opción sería chkconfig ,

sudo apt-get install chkconfig

Se puede utilizar a través de CLI chkconfig mostrando la lista de los trabajos de encendido y apagado. También podemos ver los servicios del sistema usando chkconfig –list

Los servicios pueden ser activados usando

chkconfig <service> on

Los servicios pueden ser apagados usando

chkconfig <service> off

Y podemos incluso añadir nuestro propio servicio, usando un init script con los encabezados adecuados.

chkconfig --add <service>

Y otra opción puede ser referida aquí update-rc.d explicado brevemente aquí .

Tengan en cuenta que para el Servidor Ubuntu 12.04, update-rc.d se utiliza en lugar de chkconfig.

1 votos

En el servidor ubuntu: Package chkconfig is not available, but is referred to by another package.

0 votos

@pwned Eres libre de editar y publicar la información actualizada sobre la edición del servidor.Gracias.

0 votos

He hecho lo que me han sugerido, ahora está para la revisión por pares.

49voto

Daniel Moore Puntos 148

Para aquellos de nosotros que corren Ubuntu sobre ssh, creo que la mejor opción es rcconf - un programa basado en el texto:

sudo apt-get install rcconf
sudo rcconf

alt text

Navegue con las teclas de tabulación y de flecha, pulse la barra espaciadora para activar/desactivar. Los cambios son persistentes en los reinicios.

Captura de pantalla prestada de esta entrada de blog que también muestra sysv-rc-conf - una herramienta similar que también te permite establecer el nivel de ejecución. (Para aquellos que se preocupan lo suficiente por los niveles de ejecución como para querer cambiarlos :)

Desafortunadamente, rcconf no funciona con upstart (servicios listados en /etc/init/* ), sólo con el mecanismo tradicional ( ls -l /etc/init.d/* - los que no son vínculos simbólicos).

Afortunadamente, muchos de los servicios que son relevantes cuando se hace ssh-ing en un servidor (Apache, Tomcat, mdadm, boinc-client...) no han sido movidos a upstart todavía.

6 votos

¿Todavía funciona esto con upstart?

3 votos

Por desgracia, no. Pero ha funcionado para todos los casos que he querido cambiar - los trabajos upstart parece ser en su mayoría cosas que nunca quiero desactivar - reloj de hardware, demonio de registro, red, etc. (en el servidor de Ubuntu, al menos). Pero es algo a tener en cuenta (yo no lo estaba :), he actualizado el post.

0 votos

Desafortunadamente mysql fue convertido a upstart. Y ese es un servicio que sólo uso cuando estoy haciendo algún proyecto.

18voto

Postadelmaga Puntos 659

Descubrí que existe esta herramienta GUI, algo como BUM pero compatible con Upstart:

  • Jobs-Admin

    sudo apt-get install jobs-admin

0 votos

Pero es demasiado simple, y no permite cambiar los "trabajos protegidos" (¿qué es eso de los trabajos? ¡Apple tiene trabajos, el sistema operativo tiene demonios!)

0 votos

Ni siquiera permite cambiar los "trabajos no protegidos" (Ubuntu 14.04), produciendo en su lugar un informe de fallo ;-)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X