Manejo de servicios con systemd (Examen RHCSA – RHCE)

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.

Systemd introduce el concepto de unidades systemd. Estas unidades están representadas por los archivos de configuración de unidades  «Systemd Unit Locations«, y encapsulan la información sobre los servicios del sistema, snapshot del estado del sistema, y otros objetos que son relevantes para el sistema de inicio, funciona permitiendo la activacion de zocalos y buses de ejecucion.

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 serviciosystemd1

 

 

 

 

 

  • 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

Selección_034

  • Para detener un servicio se hace de la misma forma cambiando start por stop
systemctl stop servicio.service

Selección_035

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

Selección_036

  • 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

Selección_037

  • Chequear las propiedades del servicio
systemctl show servicio.service

Selección_038

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

Jorge Romero
Sigueme

Deja una Respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.