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?
Aqui está uma maneira sem perl
:
awk '{printf("%d:%02d:%02d:%02d\n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime
\n
para nova linha seria bom!Você pode fazer isso, por exemplo, com perl e algumas contas simples:
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)
fonte
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 nativamenteTomar 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.fonte
Adaptando a parte relevante desta resposta .
Desde que seu tempo de atividade seja inferior a um ano, você pode usar o seguinte comando:
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 .fonte
Convertendo segundos desde a época em data e hora:
fonte