Existe alguma maneira de ler o tempo total de execução de um sistema Linux a partir do BIOS ou da CPU?
Pesquisei as informações do BIOS por dmidecode. Mas dá uma data de lançamento que não é apropriada para minha pergunta.
Então eu verifiquei /proc
. Mas mantém os valores de tempo de atividade apenas da última reinicialização. Talvez escrever esses valores de tempo de atividade para cada inicialização seja uma opção.
Então eu verifiquei dumpe2fs
. Dá o tempo total de execução de um determinado disco rígido. É inútil para mim porque o disco rígido pode ser alterado enquanto meu aplicativo está em execução.
Exceto estes acima, como posso ler ou calcular o tempo de execução total do meu sistema? De onde posso ler?
Isso não é algo que o firmware rastreia, até onde eu sei. Mesmo os BMCs não medem o tempo de atividade total.
Isso não ajudará com o tempo de atividade passado de inicializações anteriores, mas você pode começar a registrar os tempos de atividade agora, instalando uma ferramenta como
uptimed
e configurando-a para que nunca descarte valores (definidoLOG_MAXIMUM_ENTRIES
como 0 emuptimed.conf
). Isso medirá o tempo de atividade do sistema operacional, não o tempo total de CPU "ligado", mas deve ser próximo o suficiente... Assim que estiveruptimed
em execução, você pode executaruprecords
para ver os totais, por exemploConforme apontado por quixotic , você poderá ter uma ideia do tempo de atividade histórico observando seus logs. Se você estiver executando o systemd, poderá visualizar as inicializações que foram registradas usando
journalctl --list-boots
. A rotação de log significa que é provável que isso perca bastante tempo de atividade.Conforme apontado por JdeBP ,
last reboot
pode fornecer uma lista mais longa de inicializações com o tempo de atividade associado.Se você não tiver problemas em obter essas informações do sistema operacional, com o tuptime você pode visualizar um relatório completo do tempo total do sistema linux, incluindo travamentos do sistema.
Por exemplo, como saída e resumo padrão:
Alternativamente é possível obter uma lista com todos os eventos históricos com o argumento list, no qual você tem como foi o evento de desligamento, ruim (uma falha) ou ok (seguindo o processo de desligamento):
Leve em consideração isso
last reboot
ejournalctl --list-boots
obtenha as informações dos logs, e esses logs têm uma vida útil máxima. Em vez disso,tuptime
armazena as informações em um arquivo db específico dedicado a ele.Para instalação, supondo que você use Linux, o pacote está disponível no Debian e derivados:
Caso contrário, você pode obter o script de instalação "tuptime-install.sh" no repositório: https://github.com/rfrail3/tuptime/