Ghost AcademyGhostLinux · Ghost Academy
GhostLinuxMódulo 108Examen 102-500

Servicios esenciales del sistema

LPI 108.1 Hora del sistemaLPI 108.2 Registro (logging)LPI 108.3 MTA básicoLPI 108.4 Impresión

Cuatro servicios de fondo que casi nunca se "ven" cuando funcionan bien, y que son los primeros sospechosos cuando algo va mal: la hora, los logs, el correo interno del sistema y la cola de impresión.

Objetivos de la unidad

1. LPI 108.1 — Mantener la hora del sistema

1.1 Dos relojes, no uno

RelojDónde viveCuándo importa
Reloj hardware (RTC)Un chip con pila propia en la placa baseMantiene la hora mientras el equipo está apagado
Reloj del sistemaEn memoria, gestionado por el kernelEl que usan realmente todos los procesos mientras el sistema está encendido

Al arrancar, el kernel lee el RTC para poner en hora el reloj del sistema; a partir de ahí viven de forma independiente hasta que algo los vuelve a sincronizar.

root@lpic1:~#
$ hwclock --show
2026-10-02 10:15:03.123456+02:00
root@lpic1:~#
$ hwclock --systohc
# copia la hora del sistema al reloj hardware
root@lpic1:~#
$ hwclock --hctosys
# copia la hora del reloj hardware al sistema (lo que hace el kernel al arrancar)

1.2 Sincronización automática: NTP

Dejar que el reloj hardware vaya "a su aire" acumula segundos de desviación cada día. El protocolo NTP (Network Time Protocol) corrige esa deriva consultando servidores de hora de referencia por red.

ImplementaciónEstado
chrony (chronyd)Estándar actual en la mayoría de distros — se adapta mejor a conexiones intermitentes y portátiles que se suspenden
systemd-timesyncdCliente NTP ligero incluido en systemd — sincroniza pero no sirve hora a otros equipos, suficiente para un cliente normal
ntpd (paquete ntp)Implementación clásica, hoy en día considerada legado frente a chrony
root@lpic1:~#
$ timedatectl
               Local time: vie 2026-10-02 10:15:03 CEST
           Universal time: vie 2026-10-02 08:15:03 UTC
                 RTC time: vie 2026-10-02 08:15:03
                Time zone: Europe/Madrid (CEST, +0200)
System clock synchronized: yes
              NTP service: active
root@lpic1:~#
$ timedatectl set-ntp true
# activa la sincronizacion automatica por NTP a traves del servicio configurado
root@lpic1:~#
$ chronyc tracking
Reference ID    : C0A80101 (ntp.ejemplo.local)
Stratum         : 3
System time     : 0.000012345 seconds fast of NTP time
Last offset     : +0.000023456 seconds
RMS offset      : 0.000045678 seconds
root@lpic1:~#
$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
^* ntp.ejemplo.local              2   6   377    42   +12us[  +9us] +/-  523us
chronyc tracking y chronyc sources son el equivalente moderno de lo que antes se consultaba con ntpq -p. El stratum indica a cuántos saltos está el servidor de la referencia horaria raíz (stratum 0, un reloj atómico/GPS) — cuanto más bajo, más autorizada la fuente.

La configuración vive en /etc/chrony/chrony.conf (Debian/Ubuntu) o /etc/chrony.conf, con líneas server/pool indicando qué servidores NTP consultar.

Un detalle que suele sorprender: el reloj hardware de un portátil con dual boot con Windows normalmente se deja en hora local (no UTC), porque Windows así lo espera por defecto — mientras que Linux, por convención, prefiere el RTC en UTC. Mezclar ambos supuestos en el mismo equipo es la causa clásica de que la hora "salte" al cambiar de sistema operativo.

2. LPI 108.2 — Registro del sistema (logging)

2.1 rsyslog: el modelo clásico de syslog

El protocolo syslog clasifica cada mensaje por facility (qué subsistema lo genera) y priority (qué gravedad tiene), y rsyslog decide a qué fichero va cada combinación según reglas en /etc/rsyslog.conf y /etc/rsyslog.d/*.conf.

FacilityOrigen típico
auth / authprivAutenticación y seguridad (login, sudo, SSH)
cronEl propio demonio cron (módulo 107)
daemonDemonios del sistema en general, sin categoría propia
kernMensajes del kernel
mailEl subsistema de correo (sección 3)
userMensajes genéricos de aplicaciones de usuario
local0–local7Libres para que el administrador los use como quiera
Priority (de menor a mayor gravedad)
debug < info < notice < warning < err < crit < alert < emerg
root@lpic1:~#
$ cat /etc/rsyslog.d/50-default.conf | grep -v '^#' | grep .
auth,authpriv.*                /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
cron.*                          /var/log/cron.log
kern.*                          -/var/log/kern.log
mail.*                          -/var/log/mail.log

Formato de cada regla: facility.priority (o * para "todas"), seguido del destino. auth,authpriv.* significa "todo lo de esas dos facilities, cualquier prioridad". Un - antes de la ruta significa que la escritura no se sincroniza a disco en cada línea (mejor rendimiento, pequeño riesgo de perder la última línea en un corte eléctrico).

FicheroContenido típico
/var/log/syslog (Debian/Ubuntu) / /var/log/messages (familia RPM)Registro general del sistema
/var/log/auth.logIntentos de login, uso de sudo, sesiones SSH
/var/log/kern.logSolo mensajes del kernel (subconjunto de lo que ya viste con dmesg en el módulo 101)
/var/log/cron.logEjecuciones de cron
/var/log/mail.logActividad del MTA (sección 3)
root@lpic1:~#
$ logger "Prueba de mensaje desde GhostLinux"
# envia un mensaje de prueba al syslog, util para comprobar que una regla de rsyslog.conf funciona
root@lpic1:~#
$ tail -1 /var/log/syslog
Oct  2 10:20:11 lpic1-lab jose: Prueba de mensaje desde GhostLinux

2.2 Rotación de logs: logrotate

Sin control, los logs crecerían para siempre. logrotate (ejecutado él mismo por cron, módulo 107) comprime y archiva logs antiguos según reglas en /etc/logrotate.conf y un fichero por servicio en /etc/logrotate.d/.

root@lpic1:~#
$ cat /etc/logrotate.d/rsyslog
/var/log/syslog
{
	rotate 7
	daily
	missingok
	notifempty
	delaycompress
	compress
}
OpciónSignificado
rotate 7Conserva 7 copias antiguas antes de borrar la más vieja
daily / weekly / monthlyFrecuencia de rotación
size 100MAlternativa: rotar por tamaño en vez de por tiempo
compressComprime las copias rotadas (con gzip, por defecto)
missingokNo falla si el log no existe todavía
notifemptyNo rota si el fichero está vacío

2.3 journald: el registro binario de systemd

En sistemas con systemd, systemd-journald captura logs en un formato binario indexado, consultable con journalctl — ya usaste lo básico en el módulo 101 para revisar el arranque. Aquí va el resto de opciones que pregunta el examen:

root@lpic1:~#
$ journalctl -u sshd
# solo los mensajes de la unidad sshd.service
root@lpic1:~#
$ journalctl -f
# sigue el log en vivo, como 'tail -f' pero para el journal
root@lpic1:~#
$ journalctl -p err
# solo mensajes de prioridad error o superior, de cualquier unidad
root@lpic1:~#
$ journalctl --since "2026-10-01" --until "2026-10-02 12:00"
# filtra por rango de fechas/horas
root@lpic1:~#
$ journalctl -k
# solo mensajes del kernel (equivalente a dmesg, pero persistente entre arranques si esta configurado)
root@lpic1:~#
$ journalctl --disk-usage
Archived and active journals take up 128.0M in the file system.
root@lpic1:~#
$ journalctl --vacuum-size=50M
# recorta el journal en disco hasta ese tamano maximo, borrando lo mas antiguo

Por defecto, en muchas distros el journal es volátil (vive solo en /run, se pierde al reiniciar) salvo que se configure lo contrario en /etc/systemd/journald.conf:

root@lpic1:~#
$ grep ^Storage /etc/systemd/journald.conf
Storage=persistent
Storage=persistent hace que el journal se guarde en /var/log/journal/ y sobreviva a los reinicios; Storage=volatile lo mantiene solo en memoria (bajo /run). El valor auto (el más habitual por defecto) usa /var/log/journal/ si ese directorio ya existe, y si no, se comporta como volátil.

En muchas distros, journald y rsyslog conviven: journald captura todo primero, y opcionalmente reenvía una copia a rsyslog para mantener los ficheros de texto tradicionales en /var/log/ que viste en el punto 2.1.

3. LPI 108.3 — Nociones básicas de MTA

Un MTA (Mail Transfer Agent) es el servicio que entrega correo, tanto hacia fuera como, más relevante para este objetivo, dentro del propio sistema: multitud de herramientas (cron, logwatch, scripts de monitorización) avisan a root por correo local cuando algo falla, sin que haga falta un servidor de correo completo expuesto a internet.

MTAEstado
PostfixEl más extendido hoy en día — el que instalan por defecto Debian/Ubuntu si pides algún soporte de correo
EximMuy usado en Debian históricamente y en cPanel/hosting compartido
SendmailEl MTA original de Unix — en gran parte sustituido, se menciona como referencia histórica
La mayoría de estos MTA incluyen una capa de compatibilidad que entiende los mismos comandos que el sendmail original (/usr/sbin/sendmail sigue existiendo como binario, apuntando al MTA real instalado) — así que un script antiguo que invoca sendmail directamente sigue funcionando igual, sea cual sea el MTA de verdad instalado detrás.
root@lpic1:~#
$ echo "Revisa el disco, queda poco espacio" | mail -s "Aviso de disco" root
root@lpic1:~#
$ mailq
Mail queue is empty

Para consultar la cola de mensajes pendientes de entregar, el comando clásico es mailq (o postqueue -p si el MTA es Postfix específicamente — hacen lo mismo).

3.1 Alias de correo: redirigir el correo de root

Nadie revisa el buzón de root en /var/spool/mail/root a diario — la práctica estándar es redirigirlo a una cuenta real que sí se lee:

root@lpic1:~#
$ cat /etc/aliases
# ejemplos de alias
postmaster: root
root: jose
root@lpic1:~#
$ newaliases
# reconstruye la base de datos de alias (/etc/aliases.db) despues de editar el fichero
Editar /etc/aliases no tiene efecto inmediato — hace falta ejecutar newaliases después para regenerar la base de datos que el MTA consulta de verdad. Es el mismo patrón que viste con update-grub en el módulo 101: el fichero fuente se edita a mano, pero hay que regenerar el artefacto que realmente se usa.

4. LPI 108.4 — Gestionar impresoras e impresión

CUPS (Common Unix Printing System) es el estándar de impresión en todo Linux de escritorio y servidor desde hace años — un demonio (cupsd) que expone cola de impresión, drivers y una interfaz de administración vía web.

root@lpic1:~#
$ systemctl status cups
● cups.service - CUPS Scheduler
   Active: active (running)

La interfaz web de administración está siempre en http://localhost:631 — es la forma más cómoda de añadir impresoras y revisar colas, aunque el examen pregunta por los comandos de línea de comandos equivalentes:

ComandoQué hace
lpr fichero.pdfEnvía un fichero a la impresora por defecto
lpr -P impresora fichero.pdfEnvía a una impresora concreta
lpqLista los trabajos en cola de la impresora por defecto
lprm 42Cancela el trabajo de impresión número 42
lpstat -tEstado completo: impresoras configuradas, cuál es la de por defecto, y todos los trabajos en todas las colas
lpadmin -p nombre -E -v URIAñade/configura una impresora (nivel de administrador)
lpoptions -d nombreFija qué impresora es la de por defecto
root@lpic1:~#
$ lpstat -t
scheduler is running
printer HP_Oficina is idle.  enabled since vie 02 oct 2026 10:00:00
HP_Oficina accepting requests since vie 02 oct 2026 10:00:00
root@lpic1:~#
$ lpr -P HP_Oficina informe.pdf
root@lpic1:~#
$ lpq -P HP_Oficina
HP_Oficina is ready
Rank    Owner   Job     File(s)             Total Size
active  jose    42      informe.pdf         1024 bytes
root@lpic1:~#
$ lprm 42
Fichero/rutaContenido
/etc/cups/cupsd.confConfiguración general del demonio: puertos, permisos de acceso a la interfaz web
/etc/cups/printers.confImpresoras configuradas y sus parámetros
Ficheros PPDDescriben las capacidades concretas de cada modelo de impresora (tamaños de papel, calidad, bandejas) — CUPS los usa para traducir una orden de impresión genérica al lenguaje específico de cada impresora
CUPS funciona igual para una impresora física conectada por USB/red que para una impresora virtual "a PDF" — el examen no distingue el hardware real detrás, solo que sepas moverte con lpr/lpq/lprm/lpstat sobre cualquier cola.

Práctica guiada

  1. Consulta timedatectl en tu VM y confirma que System clock synchronized está en yes.
  2. Envía un mensaje de prueba con logger "hola desde GhostLinux" y localízalo con tail /var/log/syslog (o journalctl | tail si tu distro no usa rsyslog clásico).
  3. Revisa tu /etc/logrotate.d/ y encuentra la regla que rota el log de APT o de rsyslog.
  4. Prueba varias opciones de journalctl: -u ssh, -p err, --since "1 hour ago", y comprueba journalctl --disk-usage.
  5. Si tienes mailutils/mailx instalado, envíate un correo local a root y compruébalo con mailq o leyendo /var/spool/mail/root.
  6. Si tienes CUPS instalado (viene con el escritorio del módulo 00), entra en http://localhost:631 desde el navegador de tu VM y explora la interfaz, luego repite lo mismo con lpstat -t por terminal.

Resumen de comandos del módulo

BloqueComandos clave
108.1 Horahwclock, timedatectl, chronyc tracking/sources
108.2 Logginglogger, /etc/rsyslog.conf, logrotate, journalctl
108.3 MTAmail, mailq, /etc/aliases, newaliases
108.4 Impresiónlpr, lpq, lprm, lpstat -t, lpadmin

Autoevaluación

  1. ¿Qué diferencia hay entre el reloj hardware (RTC) y el reloj del sistema, y cuándo se sincronizan entre sí?
  2. En una regla de rsyslog como auth,authpriv.*, ¿qué significa cada parte?
  3. ¿Qué diferencia hay entre Storage=persistent y Storage=volatile en journald.conf?
  4. ¿Por qué editar /etc/aliases no basta para que el cambio surta efecto?
  5. ¿Qué comando cancela un trabajo de impresión concreto, conociendo su número de trabajo?
  6. Quieres ver solo los mensajes de prioridad error o superior del arranque actual con journalctl. ¿Qué opciones combinarías?
← 107 · Tareas administrativasÍndice del curso109 · Redes →