AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 792723
Accepted
Fravadona
Fravadona
Asked: 2025-03-20 06:03:17 +0800 CST2025-03-20 06:03:17 +0800 CST 2025-03-20 06:03:17 +0800 CST

Como determinar quando um computador Linux foi instalado? [duplicado]

  • 772
Esta pergunta já tem respostas aqui :
Como posso descobrir há quanto tempo um sistema Linux foi instalado? (18 respostas)
Fechado há 4 dias .

Qual seria uma boa maneira de saber quando um computador Linux foi instalado?

Qualquer solução que eu possa pensar seria baseada em stat -c %y, por exemplo.

stat --format %y /etc/os-release /etc/skel
2022-04-06 12:00:18.402055811 +0200
2022-04-06 12:00:19.895055839 +0200

Mas usar o horário de modificação tem deficiências óbvias, e a data de nascimento pode não ser suportada.

linux
  • 2 2 respostas
  • 1062 Views

2 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2025-03-20T06:33:32+08:002025-03-20T06:33:32+08:00

    Acho que o mais próximo que você pode chegar (ou, mais precisamente, o melhor que você pode esperar) é o registro de data e hora da criação do próprio sistema de arquivos raiz, supondo que o sistema de arquivos foi criado durante a instalação (e o relógio foi ajustado corretamente quando foi criado).

    Assim, se no Ext4:

    sudo dumpe2fs -h "$(awk '$2 == "/" { print $1 }' /proc/mounts)" | grep "Filesystem created"
    

    Se em btrfs:

    sudo btrfs subvolume show / | grep 'Creation time'
    

    Se no zfs:

    date -d "@$(zfs get -Hpo value creation "$(awk '$2 == "/" {print $1}' /proc/mounts)")" +%FT%T%:z
    

    Em sistemas de arquivos que não armazenam um registro de data e hora de criação separadamente, o horário de criação (“nascimento”) do inode raiz pode ser substituído:

    stat -c %w /
    

    (ou qualquer outro ponto de montagem do sistema de arquivos em vez de /).

    Isso não funcionará se o sistema de arquivos foi copiado de outro lugar; em tais cenários, há arquivos no sistema que supostamente são tornados exclusivos para o sistema durante a instalação, mas isso também não é 100% confiável. Um desses arquivos é /etc/machine-id, então você pode olhar a data de modificação desse arquivo:

    stat -c %y /etc/machine-id
    

    mas tenha em mente que esse arquivo pode ser removido e recriado após a instalação do sistema.

    Você também pode determinar limites inferiores verificando o hardware instalado (assumindo um sistema físico). Infelizmente, não há uma maneira confiável de determinar se qualquer timestamp que você encontrar em um sistema é um indicador confiável!

    Se o sistema for uma máquina virtual, você poderá determinar sua data de criação observando os metadados do hipervisor.

    • 6
  2. ReflectYourCharacter
    2025-03-20T08:06:04+08:002025-03-20T08:06:04+08:00

    Uma pergunta muito interessante. Não sei se é 100% possível descobrir, dependendo se um kernel pré-configurado, initrd, GRUB, sistema de arquivos, etc. é usado e qual sistema usa quais timestamps.

    E @Stephen Kitt já mencionou um dos comandos mais importantes, não o incluí agora.

    Talvez nem todos os comandos façam sentido sozinhos e eles devam ser usados ​​em combinação.

    Estou usando o Debian 12.x GNU/Linux aqui para esses comandos e executei todos os comandos como root.

    Execute o script como root e substitua /dev/sda2pelo seu dispositivo/partição:

    Obtive a data mais antiga de: hora de criação do sistema de arquivos ext4

    /sbin/tune2fs -l /dev/sda2 | grep 'Filesystem created'
    

    Crie um script de execução system_ctrl_date:

    #!/bin/bash
    
    # 1. About the installation time of files
    echo "1. Installation time of /etc/os-release:"
    stat -c %y /etc/os-release
    echo ""
    
    # 2. If the filesystem stores birth timestamps
    echo "2. Oldest file in /etc (birth timestamp):"
    ls -lt --time=birth /etc/ | tail -1
    echo ""
    
    # 3. About the filesystem, in this case ext4
    echo "3. Filesystem creation time (ext4):"
    /sbin/tune2fs -l /dev/sda2 | grep 'Filesystem created'
    echo ""
    
    # 4. About the package manager
    echo "4. Oldest file in /var/log/installer/:"
    ls -lt /var/log/installer/
    echo ""
    
    # 5. About the bootloader/GRUB installation time
    echo "5. GRUB installation time:"
    stat /boot/grub | grep 'Birth'
    echo ""
    
    # 6. EFI System Partition installation date
    echo "6. EFI System Partition installation date:"
    ls -lt /boot/efi
    echo ""
    
    # 7. If it is not mounted under /boot/efi and is vfat
    echo "7. Oldest file in vfat filesystem (if not mounted under /boot/efi):"
    ls -lt $(findmnt -no TARGET -t vfat)
    echo ""
    
    # 8. About the creation time of the root filesystem
    echo "8. Creation time of the root filesystem:"
    stat -c %w /
    echo ""
    
    # 9. About the oldest file in the home directory
    echo "9. Oldest file in /home:"
    find /home -type f -printf '%T+ %p\n' | sort | head -n 1
    echo ""
    
    # 10. About the creation time of the kernel image
    echo "10. Creation time of the kernel image:"
    stat -c %w /boot/vmlinuz-$(uname -r)
    echo ""
    
    # 11. About the creation time of the initramfs
    echo "11. Creation time of the initramfs:"
    stat -c %w /boot/initrd.img-$(uname -r)
    echo ""
    
    # 12. About the creation time of the systemd directory
    echo "12. Creation time of the systemd directory:"
    stat -c %w /etc/systemd
    echo ""
    
    # 13. About the creation time of the user account
    echo "13. Creation time of /etc/passwd:"
    stat -c %w /etc/passwd
    echo ""
    
    # 14. About the creation time of the log directory
    echo "14. Creation time of /var/log:"
    stat -c %w /var/log
    echo ""
    
    # 15. About the creation time of the package manager cache
    echo "15. Creation time of /var/cache/apt:"
    stat -c %w /var/cache/apt
    echo ""
    
    # 16. About the creation time of the cron directory
    echo "16. Creation time of /etc/cron.d:"
    stat -c %w /etc/cron.d
    echo ""
    
    # 17. About the creation time of the network configuration directory
    echo "17. Creation time of /etc/network:"
    stat -c %w /etc/network
    echo ""
    

    Ainda tenho um script que lê informações de BIOS, UEFI, bootloader e hardware, mas acho que não faz sentido, porque é do fabricante.

    • 5

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve