Jak mogę sprawdzić, jak dawno zainstalowany był system Linux?


97

Jak znaleźć czas od pierwszej instalacji systemu Linux, pod warunkiem, że nikt nie próbował go ukryć?


Co rozumiesz przez wiek?
Let_Me_Be

@ Let: Czas, od którego został skonfigurowany.

1
@Let: Spodziewałem się odpowiedzi w stylu „sprawdź znacznik czasu / some / oscure / file, nigdy nie jest modyfikowany”. Proszę, odpowiedz na to pytanie.

2
Czy to nie jest trochę jak pytanie o wiek [statku Tezeusza] (en.wikipedia.org/wiki/Ship_of_Theseus)?
Tobu,

2
Kiedy z biegiem lat każda część instalacji linuksowej była wymieniana, czy nadal jest to ta sama instalacja? (Tak samo jak oryginalna analogia statku, który powoli wymieniał wszystkie jego części). Pytam, ponieważ moja partycja root zmieniła dyski i systemy plików, a moja partycja domowa jest starsza. Niektóre urządzenia są przygotowywane raz jako złote obrazy, a następnie podczas wdrażania otrzymują niestandardowe nazwy hostów, klucze hostów ssh i fu uuids. Złote obrazy można ponownie modyfikować i zamrozić, tak jak pod linuksem pod klucz.
Tobu,

Odpowiedzi:


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

Dzięki temu dowiesz się, kiedy system plików został utworzony.

* = W pierwszej kolumnie df /możesz znaleźć dokładną partycję, której chcesz użyć.


4
Zwykle /dev/sda1czy coś w tym stylu (cokolwiek df /pokazuje w pierwszej kolumnie), ale zasadą jest dźwięk.
Gilles

1
Hej, dobrze wiedzieć, dzięki. Ta informacja przetrwa także kopiowanie systemu plików. +1.
Faheem Mitha

4
Rozwiązanie jest dobre, ale zależy od systemu plików i wymaga uprawnień roota.
golem

7
+1. Muszę jednak zauważyć, że mój obecny pulpit został utworzony około 1994 roku. Absolutnie wszystko zmieniło się wiele razy od tego czasu (w tym dyski i typ systemu plików, którego używam), ale nadal jest to ten sam system. Ta metoda w najlepszym razie powie mi tylko datę ostatniego przejścia do nowego systemu plików.
cas

To nie powinna być zaakceptowana odpowiedź, ponieważ działa tylko z ext2 (może do ext4?), Którego nie używam.
soger

23

Sprawdź datę głównego systemu plików za pomocą dumpe2fs. Naprawdę nie mogę wymyślić, jak może to być coś innego niż data, której szukasz:

dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'

1
... lubtune2fs -l
forcefsck

2
Zapomniałeś wspomnieć, że dotyczy to tylko systemu plików ext2 / ext3 / ext4.
Let_Me_Be

Na kilku moich komputerach, na których zaktualizowałem dyski twarde, po prostu skopiowałem instalację.
derobert

1
@derobert, nadal uważam, że moja odpowiedź byłaby poprawna, biorąc pod uwagę pytanie PO. Nowy dysk nie różni się niczym od nowej pamięci RAM - nadal masz tę samą „instalację”, mimo że
otworzyłeś

@pboin Nie, kiedy kopiuję instalację, jest to większy dysk, więc dzielę partycję i mkfs (następnie używam tar / cp, aby go skopiować, a nie dd). Może nawet być innym systemem plików (np. Ext2 -> ext3 -> ext4), więc masz czas, przez który skopiowałem instalację. Tak może być inaczej niż data, której szuka OP.
derobert

16

Wokół jest kilka dat.

  • Wszystkie pliki mają daty.
  • Pliki dziennika zawierają daty.

W przypadku Debiana lub Ubuntu i ich pochodnych /var/log/installer/syslogostateczna odpowiedź znajduje się w dzienniku wkroplenia.

Ale uwaga, nie jest to gwarantowane. (zobacz inne odpowiedzi / komentarze z niektórych powodów, dla których może nie działać).


Może to być jednak specyficzne dla Debian / Ubuntu.
Faheem Mitha

@Faheem Mitha: Ten sam plik / katalog jest używany dla Ubuntu.
BillThor

1
@Bill: Tak, powiedziałem specyficzny dla Debian / Ubuntu. Oznacza to, że przepis działałby zarówno dla Debiana, jak i Ubuntu, ale być może nie dla innych (nie opartych na Debianie) dystrybucji Linuksa.
Faheem Mitha

Ale nie wszystkie pliki mają datę utworzenia. Data urodzenia AFAIK została wprowadzona tylko w ext4, a to i tak nie jest POSIX.
Konrad Gajewski,

@KonradGajewski Ale w dalszej części tej odpowiedzi lub w jej komentarzach jest podana data utworzenia pliku.
ctrl-alt-delor

12

W przypadku dystrybucji opartych na systemie Red Hat (np. CentOS, Scientific, Oracle itp.) Możesz użyć:

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.

lub

rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST

1
Jak to możliwe, że rpm -qidaje Install Date: Mon 07 Jul 2014 03:20:44 PM UTC, podczas gdy tune2fsmówi Filesystem created: Sat Dec 20 23:41:41 2014?
Benjamin

Na maszynie wirtualnej mojej platformy Azure wszystkie mają ten sam czas, więc rpm wcale nie jest niezawodny
Chris

10

Rozwiązaniem najbardziej neutralnym dla systemu plików i dystrybucji (które mogę wymyślić) jest użycie najstarszego pliku podanego przez ls -lact /etc, który analizuje metadane każdego pliku na czas tworzenia. Chociaż można w nią grać, nie ma na nią wpływu touchani pliki utworzone przez rozpakowanie archiwów (np. W tar -pcelu zachowania znaczników czasu).

Myślę, że najlepiej szukać w plikach zamiast katalogów ponieważ katalogi mają zmienić ich metadane czas utworzenia gdy ich zawartość zmienia (chyba, że ktoś może rzucić światło na dlaczego to jest?)

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

Systemy, w których brakuje GNU Coreutils, powinny usunąć tę --full-timeopcję (kolejność sortowania będzie nadal poprawna, a ty nadal będziesz mieć dzień). Czas tworzenia możesz uzyskać z metadanych pliku za pomocą stat FILE |grep Change(uruchom na najstarszym pliku wymienionym przez ls -lact).

W innych systemach innych niż Linux statprawdopodobnie ta informacja ma nieco inny układ, być może wymagający różnych flag. Pamiętaj, że nadal korzysta z metadanych pliku, a dokładność nie jest gwarantowana.

Należy również pamiętać, że statz GNU Coreutils ma „Birth” czas, który wydaje się być źle (Linux z ext4 plonów 0, aby wskazać, że to nie wiadomo, FreeBSD z UFS pokazał „narodzin” czas, który jest starszy niż system zapytaliśmy). Prawidłowa wartość została wymieniona jako czas „Zmień”.

Jeśli chcesz uzyskać fantazyjny i dostać tylko czas utworzenia najstarszego pliku w /etc:

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

To polecenie działało dla mnie na starym systemie FreeBSD (UFS, brak narzędzi GNU):

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

(Tak, to analizuje lsi to jest tabu, ale pliki nie powinny zawierać złośliwie nazwanych plików /etc.)

Możesz także użyć, stataby uzyskać inne formaty czasu. Na przykład, aby uzyskać czas tworzenia w epoce Uniksa : stat -c %Z FILE(w GNU zauważ, że %Zjest to „czas ostatniej zmiany statusu”, ale to jest poprawna flaga dla moich systemów Linux i BSD, jak wspomniano powyżej; %Wjest to „czas narodzin pliku” ) lub stat -f %c FILE(z BSD).


6

W Fedorze instalator anakondy przechowuje szczegóły konfiguracji twojej instalacji w folderze głównym root, co może dać ci pewien pomysł.

Na Debianie (przynajmniej nowsze), jest przechowywanych kilka dzienników instalacji /var/log/installer/. Starsze wersje zapisały je /var/log/installer.*. To przynajmniej w 2003 roku.


4

Zgodnie z wnioskiem OP.

Jeśli szukasz czasu, kiedy system został skonfigurowany, nie ma sposobu, aby to ustalić. Po pierwsze, system mógł zostać sklonowany (niezainstalowany), co skutecznie podrobiłoby czas tworzenia pliku.

Możesz oszacować wiek, wyszukując najstarsze pliki.


mattdm ma rację; możesz uzyskać czas dostępu, czas modyfikacji i czas zmiany; ctime jest ostatnim. Zobacz ten post SO
Michael Mrozek


2

Patrzę na najstarszy plik w katalogu / boot (na górze „ls -ltr / boot”. Często tam jest oryginalny sektor rozruchowy z pierwszej instalacji. W moim najstarszym systemie jest to data pierwszej instalacji, mimo że wszystko zastąpiłem maszynę i kilka razy skopiowałem zawartość systemu plików :)


2

Szukałem podobnego narzędzia i najlepsze, co mogłem wymyślić ls -lAhF /etc/hostname, to po prostu wiek pliku nazwy hosta. Myślę, że ogólnie nazwa hosta systemu jest ustawiona na początku i pozostała niezmieniona przez cały okres istnienia systemu. Data utworzenia systemu plików jest pewnie pomocna, ale może wprowadzać w błąd. Na przykład często używam obrazu maszyn wirtualnych, który zainstalowałem jakiś czas temu, kopiuję go, zmieniam nazwę hosta i tworzę z niego nowy serwer. Dlatego w moim przypadku /etc/hostnamejest lepszym wskazaniem niżtune2fs -l /dev/sda1


1

Jeśli użyłeś LVM podczas instalacji, możesz sprawdzić datę utworzenia woluminu logicznego wykonanego w dniu instalacji, na przykład:

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

0

ls -alct /root -> główny katalog główny jest tworzony w czasie instalacji


1
Ale później mogło się to zmienić. Czas /jest nieco mniej prawdopodobny, jeśli jądro nie jest przechowywane /, ale nadal nie jest to bardzo dobry wskaźnik. (Przypomnienie: -cto nie czas tworzenia, to czas zmiany metadanych. Większość systemów plików Unix nie przechowuje czasu tworzenia pliku.)
Gilles

pokaż mi czas, którego nie można zmienić :)
odrzutowiec

Pytanie miało założenie „pod warunkiem, że nikt nie próbował tego ukryć”. Czas /rootprawdopodobnie zmieni się naturalnie (np. Za każdym razem, gdy ktoś tam utworzy plik).
Gilles

0

Od pewnego czasu zwykle instaluję w tym samym czasie, że dystrybucja linuxa to pakiet o nazwie Tuptime , który przechowuje przydatne statystyki dotyczące czasu działania, uruchamiania, wyłączeń ...

W przypadku pytań wiersz „Żywotność systemu” zawiera te informacje. Jako przykład:

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

Więcej informacji: https://github.com/rfrail3/tuptime/


0

To jest inny sposób

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

-4

Znalazłem prosty plik. nazwa „1”. Może to pierwszy plik.

▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1

dlaczego głosować. Ten czas naprawdę wskazuje ostatni czas instalacji systemu.
utopic eexpress

Nie mam tego pliku na moim systemie Linux.
Kevin Lemaire,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.