Como localizo há quanto tempo um sistema Linux foi instalado?

97

Como posso encontrar o tempo desde que um sistema Linux foi instalado pela primeira vez, desde que ninguém tenha tentado ocultá-lo?

mattdm
fonte
O que você quer dizer com idade?
Let_Me_Be 23/03
@ Let: O tempo desde que foi configurado.
1
@ Let: Eu estava esperando uma resposta ao longo das linhas de "verificar o timestamp de / some / oscure / arquivo, nunca é modificado". Por favor, faça disso uma resposta.
2
Isso não é como perguntar a idade do [navio de Teseu] (en.wikipedia.org/wiki/Ship_of_Theseus)?
Tobu
2
Quando todas as partes de uma instalação Linux são substituídas ao longo dos anos, ainda é a mesma instalação? (Igual à analogia original de uma nave que teve todas as suas partes substituídas lentamente), pergunto porque minha partição raiz mudou discos e sistemas de arquivos, e minha partição inicial é mais antiga que isso. Alguns dispositivos são preparados uma vez como imagens douradas e, em seguida, recebem nomes de host personalizados, chaves de host ssh e fs uuids na implantação. As imagens douradas podem ser modificadas e congeladas novamente, como a linha linux turnkey.
Tobu

Respostas:

99
tune2fs -l /dev/sda1 **OR** /dev/sdb1*  | grep 'Filesystem created:'

Isso informará quando o sistema de arquivos foi criado.

* = Na primeira coluna, df /você encontra a partição exata a ser usada.

RailOcelot
fonte
4
Geralmente /dev/sda1ou algo assim (o que df /aparecer na primeira coluna), mas o princípio é sólido.
Gilles
1
Ei, é útil saber disso, obrigado. E essa informação também sobrevive copiando o sistema de arquivos. +1.
Faheem Mitha 23/03
4
A solução é boa, mas depende do sistema de arquivos e requer privilégios de root.
golem
7
+1. No entanto, devo observar que minha área de trabalho atual foi criada por volta de 1994. Absolutamente tudo mudou várias vezes desde então (incluindo os discos e o tipo de sistema de arquivos que eu uso), mas ainda é o mesmo sistema. Esse método apenas indica, na melhor das hipóteses, a data da mudança mais recente para um novo sistema de arquivos.
cas
Esta não deve ser a resposta aceita, pois funciona apenas com ext2 (talvez até ext4?) Que eu não uso.
Soger
23

Verifique a data do sistema de arquivos raiz com dumpe2fs. Eu realmente não consigo pensar em como isso poderia ser outra coisa senão a data que você está procurando:

dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'
pboin
fonte
1
... outune2fs -l
forcefsck 23/03
2
Você esqueceu de mencionar que isso é aplicável apenas ao sistema de arquivos ext2 / ext3 / ext4.
Let_Me_Be 23/03
Você teria a data errada em várias de minhas máquinas, onde atualizei os discos rígidos e apenas copiei a instalação.
Derobert 30/08/12
1
@derobert, ainda acho que minha resposta seria correta, dada a pergunta dos OPs. Um novo disco não é diferente de nova RAM - você ainda tem o mesmo 'instalação', mesmo que você bateu um novo disco em ...
pboin
@pboin Não, quando copio a instalação, é um disco maior, então particiono e mkfs (use tar / cp para copiá-la, não para dd). Pode até ser um sistema de arquivos diferente (por exemplo, ext2 -> ext3 -> ext4). Assim, você terá o tempo que eu copiei a instalação. É assim que pode ser diferente da data que o OP está procurando.
Derobert 22/10/12
16

Existem algumas datas por aí.

  • Todos os arquivos têm datas.
  • Os arquivos de log possuem datas.

No Debian ou Ubuntu e seus derivados, veja /var/log/installer/sysloga resposta definitiva, se existir, faz parte do log da instilação.

Mas cuidado, isso não é garantido. (veja outras respostas / comentários por alguns dos motivos que podem não funcionar.)

ctrl-alt-delor
fonte
Isso pode ser específico para o Debian / Ubuntu.
Faheem Mitha 23/03
@ Faaem Mitha: O mesmo arquivo / diretório é usado para o Ubuntu.
BillThor
1
@ Bill: Sim, eu disse específico ao Debian / Ubuntu. Significando que a receita funcionaria para o Debian e o Ubuntu, mas possivelmente não para outras distribuições Linux (não baseadas no Debian).
Faheem Mitha 23/03
Mas nem todos os arquivos têm uma data de criação. A data de nascimento do AFAIK foi introduzida apenas no ext4 e, de qualquer forma, não é POSIX.
Konrad Gajewski
@KonradGajewski Mas abaixo desta resposta, ou qualquer um de seus comentários menciona a data de criação do arquivo.
Ctrl-alt-delor
12

Nas distribuições baseadas no Red Hat (por exemplo, CentOS, Scientific, Oracle etc), você pode usar:

rpm -qi basesystem
Name        : basesystem
Version     : 10.0
Release     : 7.el7
Architecture: noarch
Install Date: Mon 02 May 2016 19:20:58 BST
Group       : System Environment/Base
Size        : 0
License     : Public Domain
Signature   : RSA/SHA256, Tue 01 Apr 2014 14:23:16 BST, Key ID     199e2f91fd431d51
Source RPM  : basesystem-10.0-7.el7.src.rpm
Build Date  : Fri 27 Dec 2013 17:22:15 GMT
Build Host  : ppc-015.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
Summary     : The skeleton package which defines a simple Red Hat Enterprise Linux system
Description :
Basesystem defines the components of a basic Red Hat Enterprise Linux
system (for example, the package installation order to use during
bootstrapping). Basesystem should be in every installation of a system,
and it should never be removed.

ou

rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST
el_viejillo
fonte
1
Como rpm -qié que me dá Install Date: Mon 07 Jul 2014 03:20:44 PM UTC, enquanto tune2fsdiz Filesystem created: Sat Dec 20 23:41:41 2014?
28417 Benjamin Benjamin
Na VM do meu Azure, todos têm o mesmo tempo, portanto, o rpm não é confiável
Chris
10

A solução mais neutra para o sistema de arquivos e a distribuição (que eu posso criar) é usar o arquivo mais antigo fornecido por ls -lact /etc, que analisa os metadados de cada arquivo para o tempo de criação. Embora possa ser utilizado em jogos, ele não é afetado por toucharquivos criados pela extração de arquivos (por exemplo, tar -ppara preservar os registros de data e hora).

Eu acho que é melhor olhar para arquivos em vez de diretórios desde diretórios que mudar seus metadados tempo de criação, quando os seus conteúdos mudar (talvez alguém pode lançar luz sobre por que isso acontece?)

ls -lact --full-time /etc |tail

Os sistemas que não possuem o GNU Coreutils devem remover a --full-timeopção (a ordem de classificação ainda estará correta e você ainda terá o dia). Você pode obter o tempo de criação dos metadados de um arquivo com stat FILE |grep Change(execute isso no arquivo mais antigo listado por ls -lact).

Em outros sistemas não Linux, statprovavelmente essas informações têm um arranjo um pouco diferente, possivelmente exigindo sinalizadores diferentes. Observe que isso ainda usa os metadados do arquivo e a precisão não é garantida.

Observe também que o statGNU Coreutils tem um tempo de "nascimento" que tende a estar errado (o Linux com ext4 produz 0para indicar que é desconhecido, o FreeBSD com UFS mostrou um tempo de "nascimento" mais antigo que o sistema que eu consultei). O valor correto foi listado como seu horário "Alterar".

Se você deseja obter sofisticação e obter apenas o tempo de criação do arquivo mais antigo em /etc:

ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'

Este comando funcionou para mim em um antigo sistema FreeBSD (UFS, sem GNU utils):

stat "/etc/$(ls -act /etc |tail -1)" |awk -F\" '{print $6}'

(Sim, isso analisa lse isso é tabu, mas não deve haver arquivos com nomes maliciosos /etc.)

Você também pode usar statpara obter outros formatos de hora. Por exemplo, para obter o tempo de criação na época do Unix : stat -c %Z FILE(com o GNU, observe que %Zé "hora da última alteração de status", mas esse é o sinalizador correto para meus sistemas Linux e BSD, conforme observado acima; %Wé o "momento do nascimento do arquivo" ) ou stat -f %c FILE(com BSD).

Adam Katz
fonte
6

No Fedora, o instalador do anaconda armazena os detalhes de configuração da sua instalação na pasta inicial do root, o que pode lhe dar uma idéia.

No Debian (pelo menos os mais recentes), vários logs da instalação são armazenados /var/log/installer/. As versões mais antigas as armazenavam /var/log/installer.*. Isso é pelo menos em 2003.

rajaganesh87
fonte
4

Conforme solicitado pelo OP.

Se você está procurando o horário, quando o sistema foi configurado, não há como determinar isso. Por um lado, o sistema pode ter sido clonado (não instalado), o que efetivamente falsificaria o tempo de criação do arquivo.

Você pode estimar a idade pesquisando os arquivos mais antigos.

Deixe me ser
fonte
mattdm está certo; você pode obter tempo de acesso, tempo de modificação e tempo de alteração; ctime é o último. Veja esta publicação no SO
Michael Mrozek
4
ls -alct /|tail -1|awk '{print $6, $7, $8}'
altmas5
fonte
2

Eu olho para o arquivo mais antigo em / boot (na parte superior de "ls -ltr / boot". Geralmente, há um setor de inicialização original desde a primeira instalação lá. No meu sistema mais antigo, isso indica a data da instalação original, apesar de ter substituído tudo a máquina e copiou o conteúdo do sistema de arquivos algumas vezes :)

pjc50
fonte
2

Eu estava procurando por uma ferramenta semelhante, e o melhor que pude criar foi ls -lAhF /etc/hostnamesimplesmente a idade do arquivo do nome do host. Eu acho que, geralmente, o nome do host de um sistema é definido no início e permanece inalterado durante a vida útil do sistema. A data da criação do sistema de arquivos é útil, mas pode ser enganosa. Eu, por exemplo, costumo usar a imagem de máquinas virtuais, que instalei há algum tempo, copio-a, altero o nome do host e crie um novo servidor a partir dele. Portanto, no meu caso, /etc/hostnameé melhor indicação do quetune2fs -l /dev/sda1

user1968963
fonte
1

Se você usou o LVM durante a instalação, poderá verificar a data de criação de um Volume Lógico realizado no dia da instalação, por exemplo:

$ sudo lvdisplay /dev/mapper/KUbuntu_VG-rootFS | grep Creation
  LV Creation host, time kubuntu, 2014-12-28 20:52:15 +0100
SebMa
fonte
0

ls -alct /root -> diretório inicial raiz é criado no momento da instalação

jato
fonte
1
Mas pode ter mudado depois. É /provável que o tempo em que tenha mudado seja menor se o kernel não for mantido /, mas ainda não é um indicador muito bom. (Aviso: -cnão é a hora de criação, é o tempo de troca de metadados sistemas de arquivos A maioria UNIX não armazenar o tempo de criação de um arquivo..)
Gilles
mostre-me a qualquer momento que não pode ser alterado :)
jet
A pergunta tinha como premissa “desde que ninguém tenha tentado escondê-la”. /rootÉ provável que o ctime de mude naturalmente (por exemplo, toda vez que alguém criar um arquivo lá).
Gilles
0

Desde há muito tempo, eu costumo instalar no mesmo tempo que a distribuição Linux um pacote chamado Tuptime , que mantém estatísticas úteis sobre o tempo de execução, startups, desligamentos ...

Para suas perguntas, a linha "Vida útil do sistema" possui essas informações. Como exemplo:

System startups:    110   since   10:15:27 08/08/15
System shutdowns:   107 ok   -   2 bad
System uptime:      4.04 %   -   1 days, 22 hours, 4 minutes and 44 seconds
System downtime:    95.96 %   -   45 days, 13 hours, 57 minutes and 30 seconds
System life:        47 days, 12 hours, 2 minutes and 15 seconds

Largest uptime:     2 hours, 10 minutes and 44 seconds   from   20:49:17 09/08/15
Shortest uptime:    9 seconds   from   10:23:36 08/08/15
Average uptime:     25 minutes and 8 seconds

Largest downtime:   7 days, 10 hours, 17 minutes and 26 seconds   from   06:09:45 10/08/15
Shortest downtime:  15 seconds   from   19:27:24 19/09/15
Average downtime:   9 hours, 56 minutes and 42 seconds

Current uptime:     23 minutes and 33 seconds   since   21:54:09 24/09/15

Mais informações: https://github.com/rfrail3/tuptime/

Rfraile
fonte
0

Esta é outra maneira

# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch                  Tue 11 Jul 2017 03:57:52 PM UTC
Shirish Shukla
fonte
-4

Encontrei um arquivo simples. nome "1". Talvez seja o primeiro arquivo.

▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1
eexpress utópico
fonte
por que voto negativo. Este tempo é realmente apontar o último tempo de instalação do sistema.
Utopic eexpress
Eu não tenho esse arquivo no meu Linux.
22640 Kevin