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.d
agregar nuevos servicios al inicio, que apunta a la /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 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?
chkconfig
sea lo que estás buscando.autostart
manifiestos o en*.service
archivos en varias ubicaciones, así como eninit.d
ocrontab
. Ver: unix.stackexchange.com/a/525845/43233Respuestas:
Hay servicios que se pueden habilitar / deshabilitar utilizando la GUI (como la
startup
aplicació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/null
y 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
,status
yrestart
. 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
service
comando anterior, pero no con los comandos a continuación, a menos que se conviertan al 100% en servicios de arranque:INICIO -
sudo start mysql
PARAR -
sudo stop mysql
REINICIAR -
sudo restart mysql
ESTADO -
sudo status smbd
Habilitar / deshabilitar un servicio
Para activar o desactivar un servicio de forma permanente, deberá:
donde la estrofa
manual
impedirá que Upstart cargue automáticamente el servicio en el próximo arranque. Cualquier servicio con el.override
final 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
manual
modo. 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
.service
a cada comando?systemctl mongod status
funcionó bien.systemd
conjunto 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.d
y luego usar elupdate-rc.d
comando (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##xxxx
y comenzarán con los nombres de archivoS##xxxx
. El##
enS##xxxx
medio de una "orden de salida" para el servicioxxxx
. Por el contrario, el##
deK##xxxx
los 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/init
para 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/*.conf
Permí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,
apache2
no se ha convertido a upstart . Entonces, para deshabilitarloapache2
solo ejecuteDeshabilitar servicios (trabajos) en el advenedizo
Las definiciones de trabajo de inicio 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 la
start on
condició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 on
ystop on
estrofas:manual
. Entonces, otra forma de deshabilitar el servicio a partir del 11.04 es hacer:Puede crear un
override
archivo para deshabilitar un servicio sin editar la definición del trabajo, simplemente colocando lamanual
palabra clave en él.fuente
echo manual >> /etc/init/<service>.override
lo 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.conf
existe, perostatus ssh
ystatus sshd
ambos dicen "trabajo Desconocido". ¿Esta respuesta no parece abordar tal posibilidad?status ssh
también me da 'service ssh status
sysv-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+n
página siguiente y laCtrl+p
página anterior. Puede habilitar y deshabilitar los servicios seleccionandoSPACE
los 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 –list
Los 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.d
se 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
rcconf
un 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.d
se 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 init
uno 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.conf
con 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 on
las 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 start
en nuestro ejemplo).fuente
También está el Administrador de arranque .
Instalar:
sudo apt-get install bum
Má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