¿Cómo mantener un registro de 'registro de tiempo de actividad' en Debian?

¿Cómo mantener un registro de 'registro de tiempo de actividad' en Debian?

Actualmente, mi servidor envía mi tiempo de actividad a una página HTML usando:

TIME=$(uptime -p) echo ""${TIME}"!" >> /var/www/html/index.new

Lo que genera una salida de:

¡hasta 1 día, 1 hora, 2 minutos!

También me gustaría (por curiosidad) poder mostrar el tiempo de actividad registrado de mi sistema, aunque no estoy seguro de cuál es la mejor manera de registrarlo y mostrarlo nuevamente en (uptime -p) [día, hora, minuto ] formato.

¿Existe alguna herramienta preexistente que pueda hacer esto? ¿O necesitaría registrar el tiempo de actividad de un archivo y extraer el valor más alto con grep o algo similar?

Respuesta1

Después de instalar 'uptimed', agregué las siguientes líneas a mi script:

uprecords | head -n 4 | tail -n 1 | awk '{print "Current uptime record is " $3,$4$5,$6" (hr:mis:sec)"}'

El registro de tiempo de actividad actual es de 1 día, 02:05:34 (hr:min:seg)

Esto debería ser más que adecuado para mis necesidades.

Respuesta2

Sugeriría usar la -sbandera para obtener una hora analizable de cuándo se inició el sistema. Y luego usar datey restar.

Continúe haciendo esto en bucle y compárelo con el registro. Por supuesto, el tiempo récord debe guardarse en un archivo.

(Es necesario inicializar el archivo de registro echo 0 > record) .

Mientras este script siga ejecutándose, cualquier cosa puede simplemente leer el archivo de registro para averiguar cuál es el registro actual.

#!/bin/sh

format_time ()
{
    t=$1

    days=$(($t / 86400))
    t=$(($t - 86400*$days))

    hours=$(($t / 3600))
    t=$(($t - 3600*$hours))

    minutes=$(($t / 60))
    t=$(($t - 60*$minutes))

    echo "$days days $hours hours $minutes minutes $t seconds"
}

main ()
{
    # Old record
    record="$(cat record)"

    # When the system started.
    boot="$(date -d "$(uptime -s)" '+%s')"
    while true; do
        # You could also calculate the uptime before the loop and just
        # increment it, but that will rely on the script running 24/7.
        now="$(date '+%s')"
        current_uptime="$(($now - $boot))"
        # Set and save the record when it gets beaten
        if [ "$current_uptime" -gt "$record" ]; then
            record="$current_uptime"
            echo "$record" > record
        fi
        # Status should be printed _after_ potentially having set
        # a new record:
        clear
        echo "Current uptime: $(format_time "$current_uptime")"
        echo "Record uptime: $(format_time "$record")"
        # Don't waste system resources for silly things.
        sleep 1
    done
}

main

Respuesta3

Como ya estás usando uptimed, también puedes instalaruprecords-cgique presenta la información almacenada uptimeden una página web; por defecto estará habilitado enhttp://localhost/cgi-bin/uprecords.cgi.

información relacionada