Cómo convertir timestamps en registros de servidores Linux
L

LuzCreativa

Focus Tools
Sunset
Epoch Converter
2025-09-17
Cómo convertir timestamps en registros de servidores Linux

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.