Como obter com confiança o timestamp no qual o sistema inicializou?

10

Estou ciente do comando uptime , mas ele retorna segundos após inicializar, então, se eu subtrair esse número do registro de data e hora atual, em teoria, posso obter um resultado diferente se houver duas alterações depois de ler o tempo de atividade e timestamp atual. uptime -s é o que eu quero, mas não está disponível no centos (como é calculado btw?). Posso obter apenas ctime de / proc dir? Isso parece me dar o número adequado, mas eu me pergunto se todo sistema linux tem / proc criado na inicialização.

    
por Fluffy 30.10.2014 / 15:22

1 resposta

9

Antes de mais nada, crtime é complicado no Linux . Dito isso, executando algo como

$ stat -c %z /proc/ 
2014-10-30 14:00:03.012000000 +0100

ou

$ stat -c %Z /proc/ 
1414674003

é provavelmente exatamente o que você precisa. O sistema de arquivos /proc é definido pelo padrão LFS e deve estar lá para qualquer sistema Linux, bem como para a maioria (tudo?) UNIX.

Como alternativa, supondo que você realmente não precise de precisão de segundos, mas precise apenas que o registro de data e hora esteja correto, use who :

$ who -b
   system boot  2014-10-30 14:00

De man who :        -b, --boot               tempo da última inicialização do sistema

Você pode converter isso para segundos desde a época usando o GNU date :

$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000
    
por 30.10.2014 / 15:57

Tags