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.
- Mantener la hora del sistema sincronizada y entender reloj hardware vs reloj del sistema.
- Configurar y consultar el registro de eventos, tanto con
rsyslogcomo conjournald. - Entender qué hace un MTA local y gestionar su cola y sus alias básicos.
- Gestionar impresoras y trabajos de impresión con CUPS.
1. LPI 108.1 — Mantener la hora del sistema
1.1 Dos relojes, no uno
| Reloj | Dónde vive | Cuándo importa |
|---|---|---|
| Reloj hardware (RTC) | Un chip con pila propia en la placa base | Mantiene la hora mientras el equipo está apagado |
| Reloj del sistema | En memoria, gestionado por el kernel | El 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.
$ hwclock --show
2026-10-02 10:15:03.123456+02:00$ hwclock --systohc
# copia la hora del sistema al reloj hardware$ 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ón | Estado |
|---|---|
chrony (chronyd) | Estándar actual en la mayoría de distros — se adapta mejor a conexiones intermitentes y portátiles que se suspenden |
systemd-timesyncd | Cliente 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 |
$ 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$ timedatectl set-ntp true
# activa la sincronizacion automatica por NTP a traves del servicio configurado$ 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$ chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
^* ntp.ejemplo.local 2 6 377 42 +12us[ +9us] +/- 523uschronyc 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.
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.
| Facility | Origen típico |
|---|---|
auth / authpriv | Autenticación y seguridad (login, sudo, SSH) |
cron | El propio demonio cron (módulo 107) |
daemon | Demonios del sistema en general, sin categoría propia |
kern | Mensajes del kernel |
mail | El subsistema de correo (sección 3) |
user | Mensajes genéricos de aplicaciones de usuario |
local0–local7 | Libres para que el administrador los use como quiera |
| Priority (de menor a mayor gravedad) |
|---|
debug < info < notice < warning < err < crit < alert < emerg |
$ 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.logFormato 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).
| Fichero | Contenido típico |
|---|---|
/var/log/syslog (Debian/Ubuntu) / /var/log/messages (familia RPM) | Registro general del sistema |
/var/log/auth.log | Intentos de login, uso de sudo, sesiones SSH |
/var/log/kern.log | Solo mensajes del kernel (subconjunto de lo que ya viste con dmesg en el módulo 101) |
/var/log/cron.log | Ejecuciones de cron |
/var/log/mail.log | Actividad del MTA (sección 3) |
$ logger "Prueba de mensaje desde GhostLinux"
# envia un mensaje de prueba al syslog, util para comprobar que una regla de rsyslog.conf funciona$ tail -1 /var/log/syslog
Oct 2 10:20:11 lpic1-lab jose: Prueba de mensaje desde GhostLinux2.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/.
$ cat /etc/logrotate.d/rsyslog
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
}| Opción | Significado |
|---|---|
rotate 7 | Conserva 7 copias antiguas antes de borrar la más vieja |
daily / weekly / monthly | Frecuencia de rotación |
size 100M | Alternativa: rotar por tamaño en vez de por tiempo |
compress | Comprime las copias rotadas (con gzip, por defecto) |
missingok | No falla si el log no existe todavía |
notifempty | No 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:
$ journalctl -u sshd
# solo los mensajes de la unidad sshd.service$ journalctl -f
# sigue el log en vivo, como 'tail -f' pero para el journal$ journalctl -p err
# solo mensajes de prioridad error o superior, de cualquier unidad$ journalctl --since "2026-10-01" --until "2026-10-02 12:00"
# filtra por rango de fechas/horas$ journalctl -k
# solo mensajes del kernel (equivalente a dmesg, pero persistente entre arranques si esta configurado)$ journalctl --disk-usage
Archived and active journals take up 128.0M in the file system.$ journalctl --vacuum-size=50M
# recorta el journal en disco hasta ese tamano maximo, borrando lo mas antiguoPor 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:
$ grep ^Storage /etc/systemd/journald.conf
Storage=persistentStorage=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.
| MTA | Estado |
|---|---|
| Postfix | El más extendido hoy en día — el que instalan por defecto Debian/Ubuntu si pides algún soporte de correo |
| Exim | Muy usado en Debian históricamente y en cPanel/hosting compartido |
| Sendmail | El MTA original de Unix — en gran parte sustituido, se menciona como referencia histórica |
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.$ echo "Revisa el disco, queda poco espacio" | mail -s "Aviso de disco" root$ mailq
Mail queue is emptyPara 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:
$ cat /etc/aliases
# ejemplos de alias
postmaster: root
root: jose$ newaliases
# reconstruye la base de datos de alias (/etc/aliases.db) despues de editar el fichero/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.
$ 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:
| Comando | Qué hace |
|---|---|
lpr fichero.pdf | Envía un fichero a la impresora por defecto |
lpr -P impresora fichero.pdf | Envía a una impresora concreta |
lpq | Lista los trabajos en cola de la impresora por defecto |
lprm 42 | Cancela el trabajo de impresión número 42 |
lpstat -t | Estado completo: impresoras configuradas, cuál es la de por defecto, y todos los trabajos en todas las colas |
lpadmin -p nombre -E -v URI | Añade/configura una impresora (nivel de administrador) |
lpoptions -d nombre | Fija qué impresora es la de por defecto |
$ 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$ lpr -P HP_Oficina informe.pdf$ lpq -P HP_Oficina
HP_Oficina is ready
Rank Owner Job File(s) Total Size
active jose 42 informe.pdf 1024 bytes$ lprm 42| Fichero/ruta | Contenido |
|---|---|
/etc/cups/cupsd.conf | Configuración general del demonio: puertos, permisos de acceso a la interfaz web |
/etc/cups/printers.conf | Impresoras configuradas y sus parámetros |
| Ficheros PPD | Describen 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 |
lpr/lpq/lprm/lpstat sobre cualquier cola.Práctica guiada
- Consulta
timedatectlen tu VM y confirma queSystem clock synchronizedestá enyes. - Envía un mensaje de prueba con
logger "hola desde GhostLinux"y localízalo contail /var/log/syslog(ojournalctl | tailsi tu distro no usa rsyslog clásico). - Revisa tu
/etc/logrotate.d/y encuentra la regla que rota el log de APT o de rsyslog. - Prueba varias opciones de
journalctl:-u ssh,-p err,--since "1 hour ago", y compruebajournalctl --disk-usage. - Si tienes
mailutils/mailxinstalado, envíate un correo local arooty compruébalo conmailqo leyendo/var/spool/mail/root. - Si tienes CUPS instalado (viene con el escritorio del módulo 00), entra en
http://localhost:631desde el navegador de tu VM y explora la interfaz, luego repite lo mismo conlpstat -tpor terminal.
Resumen de comandos del módulo
| Bloque | Comandos clave |
|---|---|
| 108.1 Hora | hwclock, timedatectl, chronyc tracking/sources |
| 108.2 Logging | logger, /etc/rsyslog.conf, logrotate, journalctl |
| 108.3 MTA | mail, mailq, /etc/aliases, newaliases |
| 108.4 Impresión | lpr, lpq, lprm, lpstat -t, lpadmin |
Autoevaluación
- ¿Qué diferencia hay entre el reloj hardware (RTC) y el reloj del sistema, y cuándo se sincronizan entre sí?
- En una regla de
rsyslogcomoauth,authpriv.*, ¿qué significa cada parte? - ¿Qué diferencia hay entre
Storage=persistentyStorage=volatileenjournald.conf? - ¿Por qué editar
/etc/aliasesno basta para que el cambio surta efecto? - ¿Qué comando cancela un trabajo de impresión concreto, conociendo su número de trabajo?
- Quieres ver solo los mensajes de prioridad error o superior del arranque actual con
journalctl. ¿Qué opciones combinarías?