Como manter um registro 'uptime record' no Debian?

1

Atualmente, meu servidor envia meu tempo de atividade para uma página HTML usando:

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

Que gera uma saída de:

up 1 day, 1 hour, 2 minutes!

Gostaria também (por questão de curiosidade) de exibir o tempo de atividade do meu sistema, apesar de não ter certeza da melhor maneira de registrá-lo e exibi-lo novamente no (uptime -p) [day, hr, min] formato.

Existe uma ferramenta pré-existente que pode fazer isso? Ou eu precisaria registrar o tempo de atividade em um arquivo e extrair o valor mais alto com o grep ou algo semelhante?

    
por T. Est 23.10.2016 / 22:08

3 respostas

0

Depois de instalar o 'uptimed', adicionei algumas linhas ao meu script:

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

Current uptime record is 1 day, 02:05:34 (hr:min:sec)

Isso deve ser mais do que adequado às minhas necessidades.

    
por 23.10.2016 / 22:29
0

Sugiro usar o sinalizador -s para obter um tempo analisável de quando o sistema foi iniciado. E, em seguida, use date e subtração.

Continue fazendo isso em um loop e compare-o com o registro. O tempo recorde precisa ser salvo no arquivo, é claro.

(O arquivo de registro precisa ser inicializado. echo 0 > record )

Desde que este script continue em execução, qualquer coisa pode simplesmente ler o arquivo de registro para descobrir qual é o registro atual.

#!/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
    
por 23.10.2016 / 22:29
0

Como você já está usando uptimed , você também pode instalar uprecords-cgi que apresenta as informações armazenadas por uptimed em uma página da web; Por padrão, ele será ativado no link .

    
por 23.10.2016 / 23:07