- front page
- Blog List
- Detailed article
LuzCreativa

Cómo convertir timestamps en registros de servidores Linux
Los timestamps en los logs de Linux representan segundos desde el 1 de enero de 1970 (Epoch Time). Para convertirlos a fechas legibles, el comando básico es:
date -d @1625097600
Esto mostrará "Fri Jun 30 00:00:00 UTC 2021". Puedes personalizar el formato:
date -d @1625097600 +"%Y-%m-%d %H:%M:%S"
Para timestamps en miliseegundos, divide primero el valor:
date -d @$(echo 1625097600000/1000 | bc)
Cuando trabajas con archivos de log completos, usa awk para procesarlos:
awk '{print strftime("%F %T", $1)}' access.log
Para zonas horarias diferentes, configura la variable TZ:
TZ="America/Mexico_City" date -d @1625097600
En bash modernos (v4.2+), una alternativa más rápida es:
printf '%(%F %T)T\n' 1625097600
Si necesitas procesar múltiples logs, crea un script como este:
#!/bin/bash
while read line; do
timestamp=$(echo $line | grep -o '[0-9]\{10\}')
if [ -n "$timestamp" ]; then
human_date=$(date -d @$timestamp +"%F %T")
echo "${line//$timestamp/$human_date}"
else
echo "$line"
fi
done < server.log
Para logs JSON con timestamps, jq es muy útil:
cat log.json | jq '.timestamp |= (. | strftime("%F %T"))'
Los problemas comunes incluyen:
- Timestamps en formato hexadecimal (usa printf para convertir)
- Diferentes precisiones (segundos, ms, μs)
- Zonas horarias incorrectas
- Valores futuros por overflow de 32 bits
En sistemas con systemd, usa:
systemd-analyze timestamp 1625097600
Para monitoreo avanzado, configura Logstash con este filtro:
filter {
date {
match => [ "timestamp", "UNIX" ]
target => "@timestamp"
}
}
Recuerda que algunos servicios (como Java) usan milisegundos desde epoch, mientras que otros (como Python) usan segundos. Siempre verifica la documentación del servicio específico.



