Cómo habilitar o deshabilitar los servicios?

Leí sobre 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 agregar nuevos servicios a la puesta en marcha, que tiene como objetivo /etc/init.d carpeta y su contenido.

El otro que encontré es editar .conf archivos en la /etc/init carpeta.

¿Cuál es la forma recomendada de habilitar / deshabilitar / agregar servicios y por qué?

¿Podría dar un breve ejemplo paso a paso a prueba de balas sobre cómo agregar un servicio en Ubuntu y habilitarlo y deshabilitarlo?

Hay servicios que se pueden habilitar/deshabilitar usando la GUI (como el startup aplicación) o el terminal.

Para el Terminal tienes varias opciones. Primero, abra una terminal (escriba & quot; terminal" en el guión, por ejemplo, y ábrala). Entonces:

Servicios de habilitación/deshabilitación temporales

Para detener e iniciar servicios temporalmente (No los habilita / deshabilita para futuros inicios), puede escribir service SERVICE_NAME [action]. Por ejemplo:

  • sudo service apache2 stop: Ser DEJAR el servicio Apache hasta que se reinicie o hasta que lo vuelva a iniciar.
  • sudo service apache2 start: Ser EMPEZAR el servicio Apache suponiendo que se detuvo antes.
  • service apache2 status: Le indicará el ESTADO del servicio, si está habilitado/en ejecución o deshabilitado/NO en ejecución.
  • sudo service apache2 restart: Ser REINICIAR Servicio. Esto se usa más comúnmente cuando ha cambiado un archivo de configuración. En este caso, si ha cambiado una configuración de PHP o una configuración de Apache. Reiniciar le ahorrará tener que detener/iniciar con 2 líneas de comando
  • service apache2: En este caso, como no mencionó la ACCIÓN a ejecutar para el servicio, le mostrará todas las opciones disponibles para ese servicio específico. Este aspecto varía en función del servicio, por ejemplo, con MySQL solo 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.

Systemd

A partir de Ubuntu 15.04, Upstart quedará en desuso a favor de Systemd. Con Systemd para gestionar los servicios podemos hacer lo siguiente (a través de la systemctl action SERVICE patrón):

  • sudo systemctl start SERVICE: Utilícelo para iniciar un servicio. No persiste después de reiniciar
  • sudo systemctl stop SERVICE: Utilícelo para detener un servicio. No persiste después de reiniciar
  • sudo systemctl restart SERVICE: Utilícelo para reiniciar un servicio
  • sudo systemctl reload SERVICE: Si el servicio lo admite, volverá a cargar los archivos de configuración relacionados con él sin interrumpir ningún proceso que esté utilizando el servicio.
  • systemctl status SERVICE: Muestra el estado de un servicio. Indica si un servicio se está ejecutando actualmente.
  • sudo systemctl enable SERVICE: Activa el servicio, en el siguiente reinicio o en el siguiente evento de inicio. Persiste después de reiniciar.
  • sudo systemctl disable SERVICE: Desactiva el servicio en el siguiente reinicio o en el siguiente evento de parada. Persiste después de reiniciar.
  • systemctl is-enabled SERVICE: Compruebe si un servicio está configurado actualmente para iniciarse o no en el siguiente reinicio.
  • systemctl is-active SERVICE: Comprueba si un servicio está activo actualmente.
  • systemctl show SERVICE: Muestra toda la información sobre el servicio.
  • sudo systemctl mask SERVICE: Deshabilita completamente un servicio vinculándolo a /dev/null; no puede iniciar el servicio manualmente ni habilitarlo.
  • sudo systemctl unmask SERVICE: Elimina el vínculo a /dev/null y restaura la capacidad de habilitar o iniciar manualmente el servicio.

Upstart (En Desuso Desde 15.04)

Si queremos usar la forma oficial de Upstart (Tenga en cuenta que, por el momento, no todos los servicios se han convertido a Upstart), podríamos usar los siguientes comandos:

status SERVICE - Esto nos dirá si un servicio convertido se está ejecutando o no. Tenga en cuenta que esto está en desuso a favor de start, stop, status &lificador; restart. También nos dirá si un servicio aún no se ha convertido a upstart:

Un servicio convertido normalmente generaría el estado actual (Inicio, Ejecución, Parada...) y el ID de proceso. Un servicio no convertido daría un error sobre un trabajo desconocido.

Es posible que algunos atajos solo funcionen con el service comando anterior, pero no con los comandos a continuación, a menos que estén 100% convertidos a servicios advenedizos:

  • sudo start mysql: Empezar
  • sudo stop mysql: Dejar
  • sudo restart mysql: Reiniciar
  • sudo status smbd: Estatus

Habilitar / deshabilitar un servicio

Para evitar que un servicio se inicie o se detenga de forma permanente, deberá:

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

donde la estrofa manual evitará que Upstart cargue automáticamente el servicio en el próximo arranque. Cualquier servicio con el .override la finalización tendrá prioridad sobre el archivo de servicio original. Solo podrá iniciar el servicio manualmente después. Si no desea esto, simplemente elimine el .override.Por ejemplo:

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

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

sudo rm /etc/init/mysql.override

y reinicie para que el servicio se inicie automáticamente de nuevo. Por supuesto, para habilitar un servicio, la forma más común es instalándolo. Si instala Apache, Nginx, MySQL u otros, se inician automáticamente al finalizar la instalación y se iniciarán cada vez que se inicie la computadora. La desactivación, como se mencionó anteriormente, hará uso del servicio manual.

Actualmente, hay tres formas diferentes de iniciar el software como un servicio en Ubuntu, SysV, Advenedizo y systemd. Un servicio se define aquí como un programa ejecutado por el sistema en segundo plano, en oposición a uno iniciado y ejecutado directamente por el usuario.

SysV

La forma tradicional de iniciar servicios en Linux era colocar un script en /etc/init.d, y luego use el update-rc.d comando (o en distribuciones basadas en RedHat, chkconfig) para activarlo o desactivarlo.

Este comando 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 corres ls /etc/rc2.d puede ver el orden en que se eliminarán los servicios con un nombre de archivo como K##xxxx y comenzó con nombres de archivos S##xxxx. El ## en S##xxxx significa una "orden de inicio" para el servicio xxxx. Por el contrario, el ## en K##xxxx significa la orden de muerte para el servicio xxxx.

Un problema importante con SysV fue eso al arrancar el sistema, todo tenía que hacerse en serie, una cosa tras otra, lo que hacía que los tiempos de arranque del sistema fueran realmente lentos. Se hicieron intentos para paralelizar esto, pero fueron fortuitos y difíciles de aprovechar al máximo. Esta fue la razón principal por la que Advenedizo fue creado.

Advenedizo

Upstart utiliza archivos de definición de trabajo en /etc/init definir en qué eventos se debe iniciar un servicio. Por lo tanto, mientras el sistema se está iniciando, upstart procesa varios eventos y luego puede iniciar múltiples servicios en paralelo. Esto les permite utilizar completamente los recursos del sistema, por ejemplo, iniciando un servicio vinculado al disco mientras se ejecuta otro servicio vinculado a la CPU, o mientras la red espera a que se asigne una dirección IP dinámica.

Puede ver todos los archivos de trabajo de upstart ejecutando ls /etc/init/*.conf

Permítanme detenerme aquí y decir que si no sabe qué es un servicio o qué hace, ¡NO lo desactive!

No todos los servicios se han convertido a upstart. Mientras trabajaba en el equipo de servidores de Canonical durante los últimos meses, he trabajado en una serie de archivos de trabajo convertidos, y la mejor parte es que permite deshacerse de toda la "magia" de los scripts y simplemente poner algunos comandos aquí y allá para definir exactamente cómo iniciar el servicio, y nada más. Pero por ahora, solo un puñado de servicios de red tradicionales, como calamares y samba, han sido convertidos.

¿Es un servicio basado en advenedizos?

Para averiguar si un servicio está basado en advenedizos, puede ejecutar el comando de estado:

status servicename

Si es un advenedizo job, mostrará esto:

$ status statdstatd start/running, process 942

Pero si no lo es, verás algo más como esto:

$ status apache2status: Unknown job: apache2

En este caso, apache2 no se ha convertido advenedizo. Por lo tanto, para desactivar apache2 solo corres

sudo update-rc.d apache2 disablesudo service apache2 stop

Deshabilitar servicios (trabajos) en upstart

Las definiciones de trabajo de Upstart no tienen un update-rc.d comando. Para deshabilitar el trabajo, debe editar el archivo de trabajo directamente para deshabilitarlo. Hay dos maneras de hacer esto.

Si aún desea poder iniciarlo manualmente, debe comentar el start on condición. Digamos que quieres instalar samba, pero no que se inicie automáticamente. Aquí está el archivo de trabajo (en natty):

description "SMB/CIFS File Server"author      "Steve Langasek <steve.langasek@ubuntu.com>"start on local-filesystemsstop on runlevel [!2345]respawnpre-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/sambaend scriptexec smbd -F

Desactivar samba, puedes poner un # en frente de la"start on local-filesystems". Tenga en cuenta que, si bien no se iniciará de nuevo en el arranque, aún debe detenerlo esta vez con

sudo service smbd stop

Si, sin embargo, nunca quieres samba para empezar, sugeriría eliminar el paquete. Sin embargo, si lo desea instalado, pero no iniciable, también puede hacer:

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Deshabilitar un servicio usando la estrofa de inicio/parada (a partir de 11.04)

A partir de la versión de upstart que estará en 11.04, hay una nueva palabra clave que deshabilita el start on y stop on estrofas: manual. Entonces, otra forma de deshabilitar el servicio a partir de 11.04 es hacer:

echo 'manual' | sudo tee /etc/init/mysql.override# command from root shellecho manual >> /etc/init/mysql.override

Puede crear una override archivo para deshabilitar un servicio sin editar la definición de trabajo, simplemente poniendo el manual palabra clave en ella.

sysv-rc-conf

Intente usar sysv-rc-conf

sudo apt-get install sysv-rc-conf

y para comenzar a administrar los servicios, ejecute

sudo sysv-rc-conf

Que abrirá una ventana interactiva como esta

Puede navegar más a través de las páginas usando Ctrl+n para la página siguiente y Ctrl+p para la página anterior. Puede habilitar y deshabilitar los servicios seleccionando SPACE en los niveles de ejecución deseados.

Trabajos-Admin

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

sudo apt-get install jobs-admin

Que también proporciona una GUI como esta

Para mostrar más trabajos, debe marcar la casilla Mostrar Trabajos Protegidos de su menú.

chkconfig

Y la tercera opción sería chkconfig,

sudo apt-get install chkconfig

Se puede usar a través de CLI chkconfig, mostrando la lista de trabajos activados/desactivados.También podemos ver los servicios del sistema usando chkconfig –list

Los servicios se pueden activar mediante

chkconfig <service> on

Los servicios se pueden desactivar mediante

chkconfig <service> off

E incluso podemos agregar nuestro propio servicio, utilizando un script de inicio adecuado con los encabezados adecuados.

chkconfig --add <service>

actualización-rc.d

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

Tenga en cuenta que para Ubuntu Server 12.04, update-rc.d se utiliza en lugar de chkconfig.

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

sudo apt-get install rcconfsudo rcconf

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

Captura de pantalla tomada de esta entrada de blog, que también muestra sysv-rc-conf - una herramienta similar que también le 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 enumerados en /etc/init/*), solo con el mecanismo tradicional (ls -l /etc/init.d/* - los que no son enlaces simbólicos).

Afortunadamente, muchos de los servicios que son relevantes al iniciar sesión en un servidor (Apache, Tomcat, mdadm, boinc-client...) aún no se han movido a upstart.

Descubrí que hasta bionic existe esta herramienta GUI, algo así como BUM pero compatible con Upstart: Jobs-Admin

sudo apt-get install jobs-admin

Editar el archivo de configuración de upstart existente (como se describió anteriormente) no es una buena idea. Un paquete actualizado podría proporcionar una configuración actualizada, y tendría que repetir sus cambios una y otra vez.

Echando un vistazo a man 5 init uno encontrará una solución más apropiada: usar una configuración de anulación. Ejemplo corto: Digamos que tenemos un servicio llamado "foobar", por lo que habría un archivo llamado /etc/init/foobar.conf con su configuración advenediza. Ahora no desea eliminar ese archivo, ni modificarlo -- pero tampoco desea que se ejecute este servicio. Así que coloca un anular archivo al lado: /etc/init/foobar.override, que contiene (opcionalmente el encabezado con la descripción y) en su lugar el start on / stop on líneas colocas una línea con una palabra: manual. De esta manera, le dices a upstart que básicamente use el foobar.conf, pero anule la definición de inicio para que solo inicie ese servicio cuando se aplique manualmente (a través de service foobar start en nuestro ejemplo).

También está el Gestor de Arranque.

Instalar: sudo apt-get install bum

Más info: http://www.marzocca.net/linux/bum.html

El método más simple para mí, ya que solo uso CLI, es update-rc.d.

Para habilitar o deshabilitar el inicio automático al reiniciar, etc :

sudo update-rc.d <daemon|service> <enable|disable>

Ejemplo:

update-rc.d spamassassin enable

Para detener o iniciar un demonio o comprobar su estado:

sudo service <daemon|service> <start|stop|restart|reload|force-reload|status>

Ejemplo:

sudo service spamassassin status  spamassassin.service - Perl-based spam filter using text analysis   Loaded: loaded (/lib/systemd/system/spamassassin.service; disabled; vendor preset: enabled)   Active: active (running) since Thu 2020-05-21 13:04:10 SAST; 4s ago  Process: 1928 ExecStart=/usr/sbin/spamd -d --pidfile=/var/run/spamd.pid $OPTIONS (code=exited, status=0/SUCCES Main PID: 1949 (spamd)    Tasks: 3 (limit: 2361)   CGroup: /system.slice/spamassassin.service           ├─1949 /usr/bin/perl -T -w /usr/sbin/spamd -d --pidfile=/var/run/spamd.pid --create-prefs --max-child           ├─1951 spamd child           └─1952 spamd child`  etc  etc

update-rc.d puede hacer un poco más que lo básico que se muestra arriba:

usage: update-rc.d [-f] <basename> remove       update-rc.d [-f] <basename> defaults       update-rc.d [-f] <basename> defaults-disabled       update-rc.d <basename> disable|enable [S|2|3|4|5]        -f: force

Como siempre, puedes referirte manual.

Yo uso Stacer:

Stacer es un optimizador de sistema de código abierto y monitor de aplicaciones que ayuda a los usuarios a administrar todo el sistema con diferentes aspectos, es una utilidad de sistema todo en uno.

También muestra servicios y procesos. Una caja de herramientas de sistema GUI completa.

Tenga en cuenta que la respuesta para Ubuntu 14.04 todavía falta aquí.

@MarcelloNuccio: A partir de Ubuntu 15.04, Upstart ha quedado en desuso a favor de Systemd.

Para establecer contactos, consulte: How to restart the networking service? - Ask Ubuntu

Esto sería útil para aquellos que están atascados en Fedora 12 y han aterrizado aquí. En caso de que linkrot `chkconfig ’ sea lo que está buscando.

Los programas de inicio automático se configuran en los manifiestosinicio automático ' o en*.servicio ’ archivos en varias ubicaciones, así como en init.d o crontab. Ver: upstart - How to start application after login on CentOS? - Unix & Linux Stack Exchange