Leí sobre cómo habilitar y deshabilitar los servicios en Ubuntu y parece que hay diferentes posibilidades para administrarlos.
El primer método que encontré es update-rc.dagregar nuevos servicios al inicio, que apunta a la /etc/init.dcarpeta y su contenido.
El otro que encontré es editar .confarchivos en la /etc/initcarpeta.
¿Cuál es la forma recomendada para 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?

chkconfigsea lo que estás buscando.autostartmanifiestos o en*.servicearchivos en varias ubicaciones, así como eninit.docrontab. Ver: unix.stackexchange.com/a/525845/43233Respuestas:
Hay servicios que se pueden habilitar / deshabilitar utilizando la GUI (como la
startupaplicación) o el terminal.Para la Terminal tienes varias opciones. Primero, abra un terminal (escriba "terminal" en el tablero, por ejemplo, y ábralo). Entonces:
Servicios temporales de activación / desactivación
Para detener e iniciar los servicios temporalmente (no los habilita / deshabilita para futuras botas), puede escribir
service SERVICE_NAME. Por ejemplo:sudo service apache2 stop( DETENDRÁ el servicio Apache hasta que se reinicie o hasta que lo inicie nuevamente).sudo service apache2 start( INICIARÁ el servicio Apache suponiendo que se haya detenido 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( REINICIARÁ el servicio. Esto se usa más comúnmente cuando ha cambiado, un archivo de configuración. En este caso, si cambió una configuración de PHP o una configuración de Apache. Reiniciar le ahorrará tener que parar / comenzar con 2 líneas de comando )service apache2(En este caso, dado que 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 según el 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 administrar los servicios podemos hacer lo siguiente:
systemctl start SERVICE- Úselo para iniciar un servicio. No persiste después de reiniciarsystemctl stop SERVICE- Úselo para detener un servicio. No persiste después de reiniciarsystemctl restart SERVICE- Úselo para reiniciar un serviciosystemctl reload SERVICE- Si el servicio lo admite, volverá a cargar los archivos de configuración relacionados 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.systemctl enable SERVICE- Activa el servicio, en el próximo reinicio o en el próximo evento de inicio. Persiste después del reinicio.systemctl disable SERVICE- Desactiva el servicio en el próximo reinicio o en el siguiente evento de parada. Persiste después del reinicio.systemctl is-enabled SERVICE- Compruebe si un servicio está configurado actualmente para iniciarse o no en el próximo reinicio.systemctl is-active SERVICE- Compruebe si un servicio está actualmente activo.systemctl show SERVICE- Mostrar toda la información sobre el servicio.sudo systemctl mask SERVICE- Desactivar completamente un servicio al vincularlo a/dev/null; no puede iniciar el servicio manualmente ni habilitarlo.sudo systemctl unmask SERVICE- Elimina el enlace/dev/nully restablece 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 en favor destart,stop,statusyrestart. También nos dirá si un servicio aún no se ha convertido en un sistema de arranque:Un servicio convertido normalmente generará el estado actual (Inicio, Ejecución, Detención ...) y la ID del proceso. Un servicio no convertido daría un error sobre un trabajo desconocido .
Algunos accesos directos solo pueden funcionar con el
servicecomando anterior, pero no con los comandos a continuación, a menos que se conviertan al 100% en servicios de arranque:INICIO -
sudo start mysqlPARAR -
sudo stop mysqlREINICIAR -
sudo restart mysqlESTADO -
sudo status smbdHabilitar / deshabilitar un servicio
Para activar o desactivar un servicio de forma permanente, deberá:
donde la estrofa
manualimpedirá que Upstart cargue automáticamente el servicio en el próximo arranque. Cualquier servicio con el.overridefinal 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:Pondrá el servicio MySQL en
manualmodo. Si no quieres esto, luego puedes simplemente hacery reinicie para que el servicio se inicie automáticamente nuevamente. Por supuesto, para habilitar un servicio, la forma más común es instalarlo. Si instala Apache, Nginx, MySQL u otros, se iniciarán 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.fuente
.servicea cada comando?systemctl mongod statusfuncionó bien.systemdconjunto de comandos funciona de maravilla en Ubuntu 18.04.Actualmente hay tres formas diferentes de iniciar el software como servicio en Ubuntu, SysV , Upstart y systemd . Un servicio se define aquí como un programa ejecutado por el sistema en segundo plano, en lugar de uno iniciado y ejecutado directamente por el usuario.
SysV
La forma tradicional de iniciar servicios en Linux era colocar un script
/etc/init.dy luego usar elupdate-rc.dcomando (o en distribuciones basadas en RedHatchkconfig) para habilitarlo o deshabilitarlo.Este comando utiliza una lógica ligeramente complicada para crear enlaces simbólicos
/etc/rc#.d, que controlan el orden de inicio de los servicios. Si ejecutals /etc/rc2.d, puede ver el orden en que los servicios se eliminarán con un nombre de archivo comoK##xxxxy comenzarán con los nombres de archivoS##xxxx. El##enS##xxxxmedio de una "orden de salida" para el servicioxxxx. Por el contrario, el##deK##xxxxlos medios del orden de interrupción de servicioxxxx.Un problema importante con SysV fue que 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. Esta fue la razón principal por la que se creó Upstart .
Advenedizo
Upstart utiliza archivos de definición de trabajo
/etc/initpara definir en qué eventos se debe iniciar un servicio. Por lo tanto, mientras el sistema se inicia, el proceso de arranque procesa varios eventos y luego puede iniciar varios servicios en paralelo. Esto les permite utilizar completamente los recursos del sistema, por ejemplo, al iniciar un servicio vinculado al disco mientras se ejecuta otro servicio vinculado a la CPU, o mientras la red está esperando que se asigne una dirección IP dinámica.Puede ver todos los archivos de trabajo de inicio ejecutando
ls /etc/init/*.confPermítanme parar aquí y decir que si no saben qué es un servicio o qué hace, ¡NO lo deshabiliten!
No todos los servicios se han convertido en advenedizos. Mientras trabajaba en el equipo del servidor en Canonical durante los últimos meses, trabajé en varios archivos de trabajo convertidos, y la mejor parte es que permite deshacerse de toda la "magia" del script y simplemente poner pocos 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 el calamar y la samba , se han convertido.
¿Es un servicio basado en el arranque?
Para saber si un servicio está basado en el arranque, puede ejecutar el comando de estado:
Si es un trabajo inicial , mostrará esto:
Pero si no es así, verá algo más como esto:
En este caso,
apache2no se ha convertido a upstart . Entonces, para deshabilitarloapache2solo ejecuteDeshabilitar servicios (trabajos) en el advenedizo
Las definiciones de trabajo de inicio no tienen un
update-rc.dcomando. 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 la
start oncondición. Digamos que quiere instalar samba , pero no quiere que se inicie automáticamente. Aquí está el archivo de trabajo (en natty):Para deshabilitar samba , puede poner un
#frente a "start on local-filesystems". Tenga en cuenta que si bien no se iniciará una copia de seguridad en el arranque, aún debe detenerlo esta vez conSin embargo, si nunca desea que comience la samba , le sugiero que elimine el paquete. Sin embargo, si desea instalarlo, pero no se puede iniciar, también puede hacer lo siguiente:
Deshabilitar un servicio usando la stanza start / stop (a partir del 11.04)
A partir de la versión de advenedizo que estará en 11.04, hay una nueva palabra clave que desactiva el
start onystop onestrofas:manual. Entonces, otra forma de deshabilitar el servicio a partir del 11.04 es hacer:Puede crear un
overridearchivo para deshabilitar un servicio sin editar la definición del trabajo, simplemente colocando lamanualpalabra clave en él.fuente
echo manual >> /etc/init/<service>.overridelo tanto, se prefiere ya que deja intacto el filtro original .conf. De todos modos, sigue siendo una pena que una habilitación / deshabilitación tan básica tardó 3 años en desarrollarse, y no hay GUI para eso./etc/init/ssh.confexiste, perostatus sshystatus sshdambos dicen "trabajo Desconocido". ¿Esta respuesta no parece abordar tal posibilidad?status sshtambién me da 'service ssh statussysv-rc-conf
Intenta usar sysv-rc-conf
y para comenzar a administrar los servicios, ejecute
Lo que abrirá una ventana interactiva como esta
Puede navegar más a través de las páginas usando la
Ctrl+npágina siguiente y laCtrl+ppágina anterior. Puede habilitar y deshabilitar los servicios seleccionandoSPACElos niveles de ejecución deseados.Empleos-Admin
Otra alternativa sería Jobs-Admin al instalar a través de
Que también proporciona una GUI como esta
Para mostrar más trabajos, debe marcar Mostrar trabajos protegidos en su menú.
chkconfig
Y la tercera opción sería chkconfig ,
Se puede usar a través de CLI
chkconfig, que muestra la lista de trabajos de encendido / apagado. También podemos ver los servicios del sistema usandochkconfig –listLos servicios se pueden activar usando
Los servicios se pueden desactivar usando
E incluso podemos agregar nuestro propio servicio, utilizando un script de inicio adecuado con encabezados adecuados.
update-rc.d
Y otra opción se puede consultar aquí update-rc.d , explicada brevemente aquí .
Tenga en cuenta que para Ubuntu Server 12.04,
update-rc.dse usa en lugar de chkconfig.fuente
Package chkconfig is not available, but is referred to by another package.Para aquellos de nosotros que ejecutamos Ubuntu sobre ssh, creo que la mejor opción es
rcconfun programa basado en texto:Navegue con las teclas de tabulación y flecha, presione la barra espaciadora para habilitar / deshabilitar. Los cambios son persistentes en todos los reinicios.
Captura de pantalla tomada de esta publicación 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 desear cambiarlos :)Desafortunadamente, rcconf no funciona con upstart (servicios listados 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 cuando se envían a un servidor (Apache, Tomcat, mdadm, boinc-client ...) aún no se han movido a la fase inicial.
fuente
update-rc.dse modificó y se eliminó parte de su funcionalidad obsoleta . El error de Debian # 727735 señala que rcconf no se cambió para coincidir. Y no, rcconf tampoco funciona con systemd, por lo que no es aplicable a ninguno de los sistemas init predeterminados para Ubuntu Linux durante la última década.Descubrí que existe esta herramienta GUI, algo así como BUM pero compatible con Upstart:
Empleos-Admin
fuente
Editar el archivo de configuración inicial 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 inituno encontrará una solución más apropiada: usar una configuración de anulación. Breve ejemplo: supongamos que tenemos un servicio llamado "foobar", por lo que habría un archivo llamado/etc/init/foobar.confcon su configuración inicial. Ahora no desea eliminar ese archivo ni modificarlo, pero ¿tampoco desea que se ejecute este servicio? Por tanto, coloca una anulación de archivo junto a él:/etc/init/foobar.override, que contiene (opcionalmente la cabecera con la descripción y) en lugar de losstart on/stop onlas líneas se coloca una línea con una palabra:manual. De esta manera, le dice a upstart que básicamente use elfoobar.conf, pero anule la definición de inicio para iniciar ese servicio solo cuando se aplica manualmente (a través deservice foobar starten nuestro ejemplo).fuente
También está el Administrador de arranque .
Instalar:
sudo apt-get install bumMás información: http://www.marzocca.net/linux/bum.html
fuente
Yo uso Stacer. Muestra servicios y procesos también. Una completa caja de herramientas del sistema GUI. https://github.com/oguzhaninan/Stacer
fuente