Quero exibir /proc/uptime
no formato bem como:
DD:HH:MM:SS
/proc/uptime
desistir do tempo do sistema em segundos, existe uma solução padrão que converte segundos para esse formato?
Quero exibir /proc/uptime
no formato bem como:
DD:HH:MM:SS
/proc/uptime
desistir do tempo do sistema em segundos, existe uma solução padrão que converte segundos para esse formato?
Respostas:
Você pode fazer isso, por exemplo, com perl e algumas contas simples:
cat /proc/uptime | perl -ne '/(\d*)/ ; printf "%02d:%02d:%02d:%02d\n",int($1/86400),int(($1%86400)/3600),int(($1%3600)/60),$1%60'
Se você não precisar dos segundos, basta executar o uptime
comando. Sua saída pode ser simplesmente transformada em DD: HH: MM.
Por exemplo, usando (funciona dessa maneira apenas se o tempo de atividade for> 1h)
uptime | perl -ne '/(\d*) day[^\d]*(\d*):(\d*)/ ; printf "%02d:%02d:%02d\n", $1, $2, $3'
Não, porque não é realmente um problema difícil. Divida o número de segundos por 86400 usando a divisão inteira para obter o número de dias. Pegue o restante e divida-o por 3600 para obter o número de horas. Divida o restante disso por 60 para obter o número de minutos e você ficará com o número de segundos. Tudo isso é possível a partir do shell usando o expr
comando se o seu shell for antigo o suficiente para não suportar aritmética nativamente
Tomar o número de segundos desde a época e transformá-lo em uma data legível por humanos é um problema difícil, e, portanto, existem maneiras padrão de fazer isso, por exemplo, a date -r SECONDS
partir do shell. Mas isso é um problema diferente.
Adaptando a parte relevante desta resposta .
Desde que seu tempo de atividade seja inferior a um ano, você pode usar o seguinte comando:
TZ=UTC date -d@$(cut -d\ -f1 /proc/uptime) +'%j %T' | awk '{print $1-1"d",$2}'
Eu extraio o primeiro campo do arquivo de tempo de atividade, pois pelo menos no meu Linux, há um segundo campo que contém o tempo total ocioso. Trato isso como o número de segundos desde a época e o converto no dia do ano, seguido do tempo em horas, minutos e segundos. Como o dia do ano começa às uma, subtraio um daquele em minha awk
invocação final .
\n
para nova linha seria bom!