Qual é a maneira independente de determinar a data de instalação do sistema operacional?

10

Estou em uma máquina CrunchBang e tentando escrever um script que precisa ter a data de instalação do SO como referência.

Eu procurei e encontrei este comando:

ls -lct /etc | tail -1 | awk '{print $6, $7, $8}'

Imprime

Mar 31 21:24

Eu não entendi a tail -1parte, mas consegui descobrir que $ 6 $ 7 $ 8 são as 6as e 7as ocorrências da última linha que o comando está referenciando.

No entanto, percebi que o ano não pode ser incluído, pois o ano não foi exibido no ls -ltccomando.

Algumas pessoas sugeriram que a data /etcfosse criada e algumas verificassem o /var/log/syslogetc. Eu pensei que isso poderia ser um pouco específico para a distribuição.

Qual é a sua recomendação para uma maneira verdadeiramente independente de encontrar a data de instalação do SO?

Animesh
fonte
1
Por que você acha que /etca data de criação da verificação é específica da distribuição?
Kevin
Recentemente, li que existem algumas distros que têm uma hierarquia de sistema de arquivos diferente, como o gobolinux, e tinha a impressão de que poderia haver mais distros semelhantes ao gobolinux.
Animesh 02/04
1
Eu acho que verificar / etc é mais portátil do que assumir um sistema de arquivos ext. Ou apenas verifique o diretório mais antigo em /.
Kevin
1
Apenas para completar, observarei que a saída de ls mostra o momento em que ele tem menos de seis meses e o ano em que ele tem mais de seis meses.
usar o seguinte código
@ Kevin se você descompactar um arquivo preservando as permissões, o diretório / arquivo mais antigo poderá ser muito mais antigo que a data de instalação do sistema.
Scai

Respostas:

8

Se a suposição for de que você possui um sistema de arquivos ext {2,3,4} e formatou o sistema de arquivos raiz quando instalou o sistema operacional (e não fez atualizações de outro sistema operacional sem uma limpeza), pode usar o dumpe2fs:

% dumpe2fs -h /dev/mapper/vg_desktop-lv_root 2>&1 |grep 'Filesystem created'
Filesystem created:       Sat Jul 23 04:28:07 2011
jsbillings
fonte
A saída estava sendo redirecionada para algum lugar ou arquivo, porque nada aconteceu quando executo o comando.
Animesh
Você precisará fornecer o dispositivo para o seu sistema de arquivos raiz, em vez de / dev / mapper / vg_desktop-lv_root. Verifique a saída de df /para obtê-lo. Tenho certeza que você pode automatizá-lo.
Jsbillings
Percebi que tinha um em _vez de -digitar o comando. Eu recebo a data agora. Obrigado.
Animesh
Ou que você não fez backup, reformatação e restauração.
Psusi
3
Meu sistema de arquivos é reiserfs. Imho, procurar / etc é uma abordagem melhor.
usuário desconhecido
0

Não conheço nenhum método formal para isso.

O que eu sempre fiz é:

touch /install-`date +"%F"` && chattr +i /install-20*

Isso cria um arquivo chamado 'install-' seguido da data atual (se hoje for executado, seria install-2012-04-03) e o define como imutável, para que não possa ser excluído por acidente.

Então é só uma questão de olhar para esse arquivo para ver quando o sistema operacional foi instalado.

benjarrell
fonte