Como posso encontrar o tempo desde que um sistema Linux foi instalado pela primeira vez, desde que ninguém tenha tentado ocultá-lo?
Como posso encontrar o tempo desde que um sistema Linux foi instalado pela primeira vez, desde que ninguém tenha tentado ocultá-lo?
Respostas:
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.
/dev/sda1
ou algo assim (o que df /
aparecer na primeira coluna), mas o princípio é sólido.
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:'
tune2fs -l
Existem algumas datas por aí.
No Debian ou Ubuntu e seus derivados, veja /var/log/installer/syslog
a 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.)
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
rpm -qi
é que me dá Install Date: Mon 07 Jul 2014 03:20:44 PM UTC
, enquanto tune2fs
diz Filesystem created: Sat Dec 20 23:41:41 2014
?
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 touch
arquivos criados pela extração de arquivos (por exemplo, tar -p
para 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-time
opçã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, stat
provavelmente 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 stat
GNU Coreutils tem um tempo de "nascimento" que tende a estar errado (o Linux com ext4 produz 0
para 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 ls
e isso é tabu, mas não deve haver arquivos com nomes maliciosos /etc
.)
Você também pode usar stat
para 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).
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.
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.
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 :)
Eu estava procurando por uma ferramenta semelhante, e o melhor que pude criar foi ls -lAhF /etc/hostname
simplesmente 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
ls -alct /root
-> diretório inicial raiz é criado no momento da instalação
/
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: -c
nã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..)
/root
É provável que o ctime de mude naturalmente (por exemplo, toda vez que alguém criar um arquivo lá).
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/
Esta é outra maneira
# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch Tue 11 Jul 2017 03:57:52 PM UTC
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