Tema 7 / 11
RHCSA Objetivo

Implementar, configurar y mantener sistemas

Tareas programadas, servicios, paquetes y arranque

🎬
VER VIDEO YOUTUBE - CLASE 7 Automatización, systemd y mantenimiento del sistema

1. Programar tareas con cron y temporizadores systemd

En Linux podemos automatizar tareas para ejecutarlas en momentos concretos usando cron o temporizadores systemd. Aunque existe el comando at, su uso es menor.

La forma clásica es cron mediante crontab -e. Cada línea define cuándo y qué comando ejecutar siguiendo la sintaxis: min hora día mes día-semana usuario comando.

Para programar tareas podemos editar el archivo /etc/crontab (añadiendo el campo de usuario) o usar el comando crontab -e -u USUARIO (sin campo de usuario) donde editaremos directamente el cron de ese user, que se crean en /var/spool/cron :

cron ejemplo

Podemos verificar tareas con crontab -l y revisar logs en /var/log/cron. Es importante comprobar que el servicio crond esté activo.

Systemd introduce los timers, una alternativa más moderna y controlable ubicada normalmente en /etc/systemd/system.

systemd timer ejemplo

Tras configurarlos ejecutamos systemctl daemon-reload y comprobamos con systemctl list-timers. En mi ejemplo llamado app.timer buscará un app.service en la misma ruta y será lo que ejecute como lo hayamos programado

systemd timer ejemplo

Deberá estar creado el .service con el mismo nombre y activo para poder levantar el .timer

2. Iniciar, detener y habilitar servicios

Los servicios se gestionan mediante systemctl. Los comandos principales son:

  • systemctl start servicio → Levanta el servicio
  • systemctl stop servicio → Detiene el servicio
  • systemctl restart servicio → Reinicia el servicio
  • systemctl status servicio → Muestra su estado y unas lineas de log.
  • systemctl enable servicio → Arranque automáticamente (Con --now habilitamos y levantaremos al mismo tiempo)
  • systemctl disable servicio → Deshabilita (No arranca al iniciar el sistema)

Por otro lado, nos podrían pedir crear un servicio. Los servicios del sistema están en /usr/bin/systemd/system, pero donde nosotros lo creariamos sería en /etc/systemd/system

systemctl ejemplo

Tened cuidado con las mayusculas/minusculas como en ExecStart, systemd se pone tonto y tarda un rato para saltar un error haciendonos perder bastante tiempo por una tontería. Nos sale como dead ya que ya se habría ejecutado, de ahí que usemos un .timer

systemctl status

3. Configurar el sistema para iniciar en un objetivo específico

Systemd utiliza targets para definir cómo arranca el sistema. Recordabamos los más importantes a tener en cuenta :

  • graphical.target → Modo gráfico
  • multi-user.target → Modo texto con red
  • rescue.target → Modo rescate
  • emergency.target → Modo mínimo

Podemos cambiar temporalmente usando systemctl isolate TARGET o hacerlo permanente con set-default.

set-default target

En el video indico que si falla el set-default hagamos un enlace, pero no funciona bien. Es debido a que está mal lanzado. Los pasos correctos y simples serían :

set-default alternative

4. Configurar clientes de servicio de tiempo

Red Hat utiliza chrony para sincronización horaria. Su configuración se encuentra en /etc/chrony.conf. Su sintaxis es server IP iburst

chrony ejemplo

Tras configurarlo reiniciamos el servicio y verificamos con chronyc sources -v (Recordamos que si sale * esta OK, si sale ? es que estaría mal).

chrony ejemplo

Importante que añadais el servicio de ntp al firewall con firewall-cmd --permanent --add-service=ntp.

También pueden pedir cambios de zona horaria, idioma o teclado.

teclado-idioma-zona

Instalar y actualizar paquetes de software

Red Hat utiliza dnf como gestor de paquetes. Los repositorios se configuran en /etc/yum.repos.d/.

Lo que nos piden en este objetivo es basicamente conocer dnf, saber crear un repositorio ( Recordad los repositorios están ubicados en /etc/yum.repos.d/) que pedirán probablemente con URL o con un ISO y CDN que es el metodo oficial de REDHAT.

Si trabajamos con un ISO debemos montarlo usando -o loop y crear el archivo .repo correspondiente:

iso repo ejemplo

Tras modificar repositorios ejecutamos dnf clean all, dnf makecache y comprobamos con dnf repolist.

Por otro lado, y MUY SEGURAMENTE nos lo pidan, acceso a los repos de REDHAT. Si el sistema es mayor a 8.8 usaremos la forma de rhc, si es inferior usaremos subscription-manager.

Independientemente de la herramienta, gestionamos tres contenidos: Content (acceso a repositorios), Analytics (vulnerabilidades vía Insights) y Remote-management (solo disponible en rhc, permite ejecutar soluciones remotas de forma automatizada).

 repo Redhat ejemplo rhc repo subscription manager repo subscription manager 2

6. Modificar el gestor de arranque del sistema

El gestor de arranque es GRUB2. Podemos modificarlo editando /etc/default/grub o usando grubby.

grub ejemplo

Si editamos manualmente debemos regenerar la configuración:

grub2-mkconfig -o /boot/grub2/grub.cfg (BIOS)
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg (UEFI)