Como determinar a "idade" de um sistema Linux desde a instalação?
39
Eu pensei que poderia facilmente verificar o carimbo de data / hora de arquivos específicos. Então eu percebi que não seria tão fácil quando eu vi timestamps como 1991.
Eu amo todas essas respostas, votei algumas e aprendi com elas. Mas me ocorre que a pergunta não está bem definida: por exemplo, minha caixa colorida passou por duas encarnações da placa-mãe e quatro alterações completas do disco rígido nos dez anos em que está rodando, com o FS sendo despejado | restaurado cada vez. Todas as minhas chaves públicas ssh são datadas de 19 de fevereiro de 2001; mas o FS raiz foi criado em 11 de junho de 2010, 20:59:01, quando o mobo foi atualizado pela última vez (junto com os discos); outros testes ainda dão resultados diferentes, e me ocorre: como você define (não descobre) a idade de um sistema linux?
Eu sempre tenho um disco rígido com uma partição que existe desde que comprei a máquina ... Coloco todas as coisas necessárias para fazer backup quando compro uma nova unidade ou crio uma nova partição raiz com novo kernel ... Mas não me ocorreu :-)
lisak 12/01
Respostas:
47
A maneira mais simples provavelmente seria (presumindo que sda1 seja seu / root /):
tune2fs -l / dev / sda1 | grep criado
Isso deve mostrar a data em que o sistema de arquivos foi criado. Confirmado para trabalhar no ext2 para ext4, não tenho certeza sobre outros sistemas de arquivos!
Quando recebo uma nova unidade para meus PCs, geralmente crio partições nela e depois os cp -adados. Em resumo: não é possível determinar a idade do sistema em todos os casos.
Hubert Kario
Talvez o uso /dev/rootseja um pouco mais geral.
Camh
Instalei um novo sistema em relação ao anterior, mantendo o sda1 FS e, portanto, a solução do MihaiM abaixo (chaves ssh) era mais precisa.
Ring Ø
14
Um mecanismo que costumo usar é verificar o tempo de alteração (ctime) nos arquivos no diretório inicial raiz. Como o /rootdiretório inicial é criado no momento da instalação e raramente é usado, isso pode fornecer uma aproximação relativamente boa. Conforme esclarecido por Kyle nos comentários, como ctime refere-se ao inode, e não aos dados, a modificação do conteúdo do arquivo não altera o ctime.
Por padrão, o lscomando imprime o horário da modificação (mtime) do arquivo. Portanto, se você substituir na opção ctime,
ls -alct /root
Isso imprimirá todos os arquivos, exibirá a hora de criação e ordenará por hora.
Como exemplo, aqui está uma amostra dos 3 arquivos mais antigos no /rootdiretório de um dos meus sistemas.
ls -alt install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root 10238 Feb 18 2010 install.log.syslog
-rw-r--r--. 1 root 129 Dec 3 2004 .tcshrc
-rw-r--r--. 1 root 100 Sep 22 2004 .cshrc
E então, verificando o horário da mudança
ls -alct install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root 100 Feb 18 2010 .cshrc
-rw-r--r--. 1 root 10238 Feb 18 2010 install.log.syslog
-rw-r--r--. 1 root 129 Feb 18 2010 .tcshrc
A data de 18 de fevereiro de 2010 certamente acompanha o tempo aproximado em que eu teria instalado esse sistema pela primeira vez.
ctime não é realmente a hora de criação de um arquivo, mas a hora da mudança. Esta é a última vez que mudei para o inode. Se você alterar as permissões ou o proprietário de um arquivo, isso será alterado. As chances são de que o proprietário ou as permissões da pasta / root em si não foram alteradas e é por isso que isso está alinhado. (Eu não sei o que o c realmente significa - especificação Single UNIX só tem "time_t st_ctime Hora da última mudança de status".
Kyle Brandt
De fato, a data / hora do log do instalador. O que pode ou não estar lá, dependendo da sua distribuição / sistema operacional.
Koos van den Hout
6
experimentar
ls -alp /etc/ssh/ssh_host_dsa_key.pub | cut -d " " -f6
as chaves são geradas quando você instala o sistema operacional.
Essa é uma boa idéia, no entanto, algumas fraquezas foram encontradas nas chaves SSH e, se você tiver feito atualizações do sistema (e deveria estar fazendo atualizações do sistema!), As chaves teriam sido regeneradas.
Josh
Excelente ideia! No entanto, se a chave for nova o suficiente, lsmostra a data de maneira diferente (pelo menos na minha máquina) para que o cutcomando não funcione corretamente. Eu usaria agora stat -c %y /etc/ssh/ssh_host*pub. Além disso, eu me pergunto por que os tempos de criação de arquivos não receberam mais amor no Linux ...
Rennex
3
Verificar o hardware seria uma boa aposta, se você tiver acesso a ele. Você pode inspecionar o sistema e / ou os componentes de hardware para ter uma boa idéia de quando foi montado.
Como alternativa, se você pode acessar a tela do BIOS, geralmente há informações de data que podem ser usadas para determinar a idade de uma máquina.
Se você puder acessar as informações SMART no disco rígido ( smartctl -a /dev/sda), pode haver algo para continuar. Não vejo um carimbo de data / hora específico no SMART, mas há pelo menos uma hora de contador de uso. Isso forneceria um limite menor de quantos anos a máquina tem (já que, se o disco rígido estiver em funcionamento há 100 horas, o sistema não poderá ter menos de 100 horas).
Quanto às verificações do sistema de arquivos, você pode procurar as informações de data para /lost+found- esse diretório foi criado quando o sistema de arquivos foi criado. A data deve estar de acordo com as informações dos ajustes da resposta anterior.
+1 para a /lost+founddica, pois essas informações estão disponíveis para usuários não privilegiados. Executar uma operação em lote como o tune2fs nos sistemas de arquivos raiz, pois o superusuário é um pouco preocupante. Além disso, esta solução funciona em sistemas de arquivos FreeBSD e não ext2 / 3/4.
Stefan Lasiewski
3
Com RedHat e derivados, é muito fácil ter uma idéia geral da versão do sistema operacional / vintage através de uma combinação de idade do arquivo e outros arquivos do sistema. Normalmente, verificarei o /root/anaconda-ks.cfgarquivo, pois ele contém os parâmetros iniciais de configuração e pacote do servidor. Às vezes uname -a, há boas informações sobre a data de compilação do kernel. Também haveria um cluster de arquivos com a mesma data em /etc; normalmente os links rcx.d, scripts rc, inittab etc.
Observe que isso (e o truque do tune2fs) funciona menos bem com máquinas virtuais, se estiverem sendo geradas a partir de uma imagem comum. A verificação das chaves do host ssh é precisa no meu Linode, no entanto.
Respostas:
A maneira mais simples provavelmente seria (presumindo que sda1 seja seu / root /):
Isso deve mostrar a data em que o sistema de arquivos foi criado. Confirmado para trabalhar no ext2 para ext4, não tenho certeza sobre outros sistemas de arquivos!
fonte
cp -a
dados. Em resumo: não é possível determinar a idade do sistema em todos os casos./dev/root
seja um pouco mais geral.Um mecanismo que costumo usar é verificar o tempo de alteração (ctime) nos arquivos no diretório inicial raiz. Como o
/root
diretório inicial é criado no momento da instalação e raramente é usado, isso pode fornecer uma aproximação relativamente boa. Conforme esclarecido por Kyle nos comentários, como ctime refere-se ao inode, e não aos dados, a modificação do conteúdo do arquivo não altera o ctime.Por padrão, o
ls
comando imprime o horário da modificação (mtime) do arquivo. Portanto, se você substituir na opção ctime,Isso imprimirá todos os arquivos, exibirá a hora de criação e ordenará por hora.
Como exemplo, aqui está uma amostra dos 3 arquivos mais antigos no
/root
diretório de um dos meus sistemas.E então, verificando o horário da mudança
A data de 18 de fevereiro de 2010 certamente acompanha o tempo aproximado em que eu teria instalado esse sistema pela primeira vez.
fonte
experimentar
as chaves são geradas quando você instala o sistema operacional.
fonte
ls
mostra a data de maneira diferente (pelo menos na minha máquina) para que ocut
comando não funcione corretamente. Eu usaria agorastat -c %y /etc/ssh/ssh_host*pub
. Além disso, eu me pergunto por que os tempos de criação de arquivos não receberam mais amor no Linux ...Verificar o hardware seria uma boa aposta, se você tiver acesso a ele. Você pode inspecionar o sistema e / ou os componentes de hardware para ter uma boa idéia de quando foi montado.
Como alternativa, se você pode acessar a tela do BIOS, geralmente há informações de data que podem ser usadas para determinar a idade de uma máquina.
Se você puder acessar as informações SMART no disco rígido (
smartctl -a /dev/sda
), pode haver algo para continuar. Não vejo um carimbo de data / hora específico no SMART, mas há pelo menos uma hora de contador de uso. Isso forneceria um limite menor de quantos anos a máquina tem (já que, se o disco rígido estiver em funcionamento há 100 horas, o sistema não poderá ter menos de 100 horas).Quanto às verificações do sistema de arquivos, você pode procurar as informações de data para
/lost+found
- esse diretório foi criado quando o sistema de arquivos foi criado. A data deve estar de acordo com as informações dos ajustes da resposta anterior.fonte
/lost+found
dica, pois essas informações estão disponíveis para usuários não privilegiados. Executar uma operação em lote como o tune2fs nos sistemas de arquivos raiz, pois o superusuário é um pouco preocupante. Além disso, esta solução funciona em sistemas de arquivos FreeBSD e não ext2 / 3/4.Com RedHat e derivados, é muito fácil ter uma idéia geral da versão do sistema operacional / vintage através de uma combinação de idade do arquivo e outros arquivos do sistema. Normalmente, verificarei o
/root/anaconda-ks.cfg
arquivo, pois ele contém os parâmetros iniciais de configuração e pacote do servidor. Às vezesuname -a
, há boas informações sobre a data de compilação do kernel. Também haveria um cluster de arquivos com a mesma data em/etc
; normalmente os links rcx.d, scripts rc, inittab etc.fonte
Isso também funciona para os sistemas Red Hat:
fonte