Guia fundamental para conocer como funcionaran los servicios en las nuevas distribuciones, los nuevos estandares y metodos para la activacion de recursos, demonios y otros procesos.
Introduccion a systemd
systemd es un administrador de sistema y servicio para Linux, y sustituye SysV y Upstart utilizado en versiones anteriores de Red Hat Enterprise Linux. systemd esta diseñado para ser compatible con SysV y proporciona una serie de características como la puesta en marcha en paralelo de los servicios del sistema en tiempo de arranque, la activación por demanda de los demonios, el apoyo a las instantáneas del estado del sistema, o la lógica de control de servicio basado en la dependencia, esta soportado a traves de ‘targets’ y estos en runlevels de ejecucion. En Red Hat Enterprise Linux 7, systemd reemplaza Upstart como el sistema de inicio por defecto.
Caracteristicas de systemd
- Es compatible con los scripts de SysVinit
- Inicia mas rapido que los sistemas anteriores
- Provee altas capacidades de paralelizacion
- Usa socket y activacion D-Bus para iniciar servicios
- Reemplaza scripts de shell y script con programas
- Ofrece inicio de demonios sobre demanda
- Realiza seguimiento de los procesos usando cgroups
- Soporta la creacion de snapshots y restauracion del estado del sistema
- Mantiene puntos de montaje y automontaje
- Implementa una elaborada logica de control de servicios basada en dependencia transaccional
- Puede trabajar como un reemplazo de SysVinit
Comparacion de la utilidad SERVICE usado con SYSTEMCTL
service
systemctl
Descripcion
service name stop
systemctl stop name.service
detener un servicio
service name start
systemctl start name.service
iniciar un servicio
service name restart
systemctl restart name.service
reiniciar un servicio
service name condrestart
systemctl try-restart name.service
reinicar un servicio solo si este esta corriendo
service name reload
systemctl reload name.service
recargar configuracion
service name status
systemctl status name.service systemctl is-active name.service
chequear el estado del servicio
service --status-all
systemctl list-units --type service --all
desplegar el estado de todos los servicios
Comparacion de la utilidad CHKCONFIG usado con SYSTEMCTL
chkconfig
systemctl
descripcion
chkconfig name on
systemctl enable name.service
habilitar servicio
chkconfig name off
systemctl disable name.service
desabilitar servicio
chkconfig --list name
systemctl status name.service systemctl is-enabled name.service
chequear si el servicio esta habilitado
chkconfig --list
systemctl list-unit-files --type service
listar todos los servicios que esatn habilitados
chkconfig --list
systemctl list-dependencies --after
lista los servicios ordenados antes de una unidad especifica
chkconfig --list
systemctl list-dependencies --before
lista los servicios ordenados despues de una unidad especifica
Niveles de ejecucion
SysV
systemd
USO
0
runlevel0.target o poweroff.target
Apaga el sistema
1 o S
runlevel1.target o resue.target
Nivel mono-usuario
2
runlevel2.target o multi-user.target
Multi-Usuario Identico al nivel 3
3
runlevel3.target o multi-user.target
Multi-Usuario
4
runlevel4.target o multi-user.target
Multi-Usuario Identico al nivel 3
5
runlevel5.target o graphical.target
Multi-usuario con servidor de video
6
runlevel6.target o reboot.target
Reinicia sistema
emergency
emergency.target
interprete de recuperacion
Comandos
Comando
Tarea
systemctl status unit
ver informacion detallada acerca del estado del servicio
systemctl start unit
Iniciar un servicio
systemctl stop unit
Detener un servicio
systemctl restart unit
Reinciar un servicio
systemctl reload unit
recargar un servicio
systemctl mask unit
Desactiva por completo un servicio desde el arranque, solo podra ser iniciado manualmente
systemctl unmask unit
Enmascara un servicio
systemctl enable unit
Activa un servicio desde el arranque
systemctl disable unit
Desactiva un servicio desde el arranque
systemctl list-dependencies unit
Lista las depencias que el servicio necesita para inicar
Archivos de configuracion de systemd
Aunque systemd prefiere utilizar un conjunto de archivos de configuracion correspondientes a un estandar nuevo, tambien puede utilizar archivos de configuracion heredados dependiendo de cada distribucion.
Un ejemplo de un archivo de configuracion nuevo seria /etc/hostname, el cual reemplazaria a /etc/sysconfig/network, este estandar tambien fue adoptado por DEBIAN y sus deribados.
- /etc/vconsole.conf : mapa del teclado por defecto y fuentes de consola
- /etc/sysctl.d/*.conf : directorio para los parametros sysctl del kernel
- /etc/os-release : archivo ID de la distribucion
Estados del servicio
- loaded : Archivo de configuración de la unidad que ha sido procesada
- active (running) : Corriendo con uno o mas procesos continuos
- active (exited) : completo con éxito una configuración de una sola vez
- active (waiting): corriendo, pero a la espera de un evento
- inactive : sin correr
- enabled : se iniciará en el arranque
- disabled : no se iniciara en el arranque
- static : no puede ser habilitado, pero puede ser iniciado por una unidad activa automáticamente
Iniciar y parar servicios
- Para iniciar un servicio systemd ejecuta las instrucciones como usuario root, por lo que si el usuario no esta dentro de la tabla de sudo estos no seran ejecutados.
systemctl start servicio.service
- Para detener un servicio se hace de la misma forma cambiando start por stop
systemctl stop servicio.service
Reiniciar y recargar un servicio
- Reniciar
systemctl restart servicio.service
- Recargar
systemctl reload servicio.service
Si no está seguro si el servicio tiene la funcionalidad para recargar su configuración, puede emitir el comando reload–or–restart. Esto volverá a cargar la configuración en el lugar si está disponible. De lo contrario, se reiniciará el servicio.
systemctl reload-or-restart servicio.service
Habilitar y desabilitar un servicio
Estos comandos se utilizan para dejar un servicio en el arranque, es similar a lo que haciamos con chkconfig o update-rc.d
- Habilitar
systemctl enable servicio.service
- Desabilitar
systemctl disable servicio.service
Estado de un servicio
Esto lo vimos un poco mas arriba pero detallare algunos comando muy utiles para saber estados del servicio
- Saber si el servicio esta activo
systemctl is-active servicio.service
- Saber si el servicio esta configurado para iniciar en el arranque
systemctl is-enabled servicio.service
- Saber si el servicio esta en estado de falla
systemctl is-failed servicio.service
Listar y descubrir unidades
- El siguiente comando es lo mismo que decir chkconfig –list
systemctl list-unit-files
- Si quisieras solo conocer los servicios que actualmente estan activos chkconfig –list | grep «activo»
systemctl list-units
- para poder ver la configuracion de un servicio
systemctl cat servicio.service
- Mirar las dependencias de un servicio
systemctl list-dependencies servicio.service
este comando despliega la informacion de dependencias requeridas del servicio en forma de arbol
- Chequear las propiedades del servicio
systemctl show servicio.service
- Editar un servicio
systemctl edit servicio.service
Espero que esta guia les sea util systemd es el futuro y es la adaptacion del nuevo estandar de linux, si viene cierto en el examen de certificacion de RHEL 7 (RHCSA), no vienen preguntas relacionadas a esto, se vuelve fundamental al momento de iniciar o detener servicios y por sobre todo despues de recuperar la password de root.
Una vez recuperada dicha password y para poder configurar mucho mas facil LDAP, deveran activar la interfaz grafica, la cual pueden activar de la siguiente manera.
systemctl isolate graphical.target
antes bastaba con cambiar el archivo de grub y dejar el init en 5
init 5
recuerden tambien que el nivel de ejecucion de el target grafico es el numero 5 por lo que si miran la tabla que deje al principio del post se daran cuenta que podrian ocupar cualquiera de estos 2 comandos y estarian haciendo lo mismo
systemctl isolate runlevel5.target systemctl isolate graphical.target
Exito y como siempre, a estudiar los examenes no son para nada faciles.
- Resetear contraseña de ROOT en Red-Hat 8 (Examen RHCSA) - 31 enero, 2020
- Paso a paso de configuración de un entorno y la creación de la primera máquina virtual en HuaweiCloud - 10 enero, 2020
- Respaldo de Archivos locales (PCS) con AZURE BACKUP & RECOVERY - 31 diciembre, 2019