El mantener logs es fundamental para el troubleshooting en Linux. Aunque si no se controlan, los registros de "systemd journal" pueden convertirse en un monstruo de varios gigabytes que consume silenciosamente tu disco.
La buena noticia es, que journalctl incluye la opción --vacuum diseñada para limpiar logs antiguos según tamaño, tiempo o cantidad de archivos.
Si administras servidores Linux, VPS o entornos de laboratorio, aprender a controlar el journal es esencial para evitar sorpresas desagradables como un “Disk Space Low” en producción.
Opciones Más Importantes de journalctl –vacuum
| Opción | Qué Hace | Ejemplo |
|---|---|---|
--disk-usage | Muestra el tamaño actual de los logs | journalctl --disk-usage |
--vacuum-size | Reduce logs a un tamaño específico | sudo journalctl --vacuum-size=500M |
--vacuum-time | Conserva logs durante un tiempo determinado | sudo journalctl --vacuum-time=30d |
--vacuum-files | Mantiene un número específico de archivos | sudo journalctl --vacuum-files=10 |
¿Cómo verificar cuánto espacio ocupan los logs?
Antes de limpiar, revisa el uso actual:
journalctl --disk-usage
Si el resultado supera los 500 MB y no estás depurando un problema activo, probablemente sea momento de hacer limpieza.
📌 Los logs del journal se almacenan en..
/var/log/journal
¿Qué Significa “Vacuum” en journalctl?
El término vacuum simplemente significa:
eliminar logs archivados hasta cumplir un criterio determinado.
Importante:
--vacuum solo elimina archivos archivados, no el log activo actual.
Si quieres asegurarte de que los logs recientes también sean elegibles para limpieza:
sudo journalctl --rotate
sudo journalctl --vacuum-size=500M
1. ¿Cómo Limpiar por tamaño? (–vacuum-size)
Es el método más utilizado.
Ejemplo:
sudo journalctl --vacuum-size=500M
Esto indica:
Mantener solo 500 MB de logs. Eliminar lo más antiguo hasta cumplir ese límite.
Ideal para:
- Servidores con SSD pequeños
- VPS con almacenamiento limitado
- Sistemas embebidos
2. ¿Cómo limpiar por tiempo? (–vacuum-time)
Si prefieres conservar solo un histórico reciente:
sudo journalctl --vacuum-time=2weeks
También puedes usar:
30d(30 días)3months1year
Ejemplo común:
sudo journalctl --vacuum-time=30d
Perfecto para:
- Cumplimiento de políticas internas
- Sistemas donde errores antiguos ya no son relevantes
3. ¿Cómo limpiar por cantidad de archivos? (–vacuum-files)
El journal divide logs en múltiples archivos según el parámetro SystemMaxFileSize.
Puedes limitar cuántos archivos mantener:
sudo journalctl --vacuum-files=100
Es menos común, pero útil si quieres mantener el índice del filesystem más ligero.
¿Cómo combinar métodos?
Puedes aplicar múltiples criterios. Se aplicará el límite más estricto:
sudo journalctl --vacuum-size=500M --vacuum-time=30d
Esto eliminará logs que:
- Superen 500 MB
- O tengan más de 30 días
Automatizar la Limpieza de Logs
Limpiar manualmente está bien… hasta que lo olvidas. Existen dos métodos principales para automatizarlo.
Método 1: Usando Cron (Clásico)
Edita el crontab del usuario root:
sudo crontab -e
Añade:
0 2 * * 0 /usr/bin/journalctl --vacuum-time=30d
Significa:
- A las 02:00 AM
- Cada domingo
- Eliminar logs con más de 30 días
Método 2 (Recomendado): Configuración Nativa en journald.conf
Este método es más eficiente porque actúa automáticamente al alcanzar el límite. Consulta la configuración actual:
systemd-analyze cat-config systemd/journald.conf
Edita el archivo de configuración:
sudo nano /etc/systemd/journald.conf
Busca la sección:
[Journal]
Y ajusta:
SystemMaxUse=500M
Reinicia el servicio:
sudo systemctl restart systemd-journald
Ahora el sistema eliminará automáticamente logs antiguos cuando supere 500 MB.
Ventaja:
- No depende de fechas
- Actúa en tiempo real
- Es más elegante y robusto
⚠️ Advertencia Importante
Si estás investigando un problema crítico ❌ No limpies los logs, puesto que esto podría eliminar la evidencia necesaria para diagnosticar el fallo.
Buenas Prácticas para Gestionar Logs en Linux
✔️ Revisa periódicamente el uso de disco
✔️ Combina límites por tiempo y tamaño
✔️ Automatiza la limpieza
✔️ Ajusta SystemMaxUse en servidores productivos
✔️ Supervisa /var/log con herramientas como du o ncdu
Conclusión
El comando journalctl --vacuum es una herramienta esencial para:
- Liberar espacio en disco
- Gestionar políticas de retención
- Mantener rendimiento óptimo del sistema
Controlar el crecimiento del journal evita que tu servidor Linux consuma espacio de forma inesperada.
Al combinar límites por tamaño, tiempo y número de archivos, y automatizar el proceso con systemd, puedes mantener tus logs bajo control sin intervención manual constante.
