Jak znaleźć czas od pierwszej instalacji systemu Linux, pod warunkiem, że nikt nie próbował go ukryć?
Jak znaleźć czas od pierwszej instalacji systemu Linux, pod warunkiem, że nikt nie próbował go ukryć?
Odpowiedzi:
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ć.
/dev/sda1
czy coś w tym stylu (cokolwiek df /
pokazuje w pierwszej kolumnie), ale zasadą jest dźwięk.
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:'
tune2fs -l
Wokół jest kilka dat.
W przypadku Debiana lub Ubuntu i ich pochodnych /var/log/installer/syslog
ostateczna 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ć).
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
rpm -qi
daje Install Date: Mon 07 Jul 2014 03:20:44 PM UTC
, podczas gdy tune2fs
mówi Filesystem created: Sat Dec 20 23:41:41 2014
?
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 touch
ani pliki utworzone przez rozpakowanie archiwów (np. W tar -p
celu 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-time
opcję (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 stat
prawdopodobnie 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 stat
z 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 ls
i to jest tabu, ale pliki nie powinny zawierać złośliwie nazwanych plików /etc
.)
Możesz także użyć, stat
aby uzyskać inne formaty czasu. Na przykład, aby uzyskać czas tworzenia w epoce Uniksa : stat -c %Z FILE
(w GNU zauważ, że %Z
jest to „czas ostatniej zmiany statusu”, ale to jest poprawna flaga dla moich systemów Linux i BSD, jak wspomniano powyżej; %W
jest to „czas narodzin pliku” ) lub stat -f %c FILE
(z BSD).
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.
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.
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 :)
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/hostname
jest lepszym wskazaniem niżtune2fs -l /dev/sda1
ls -alct /root
-> główny katalog główny jest tworzony w czasie instalacji
/
jest nieco mniej prawdopodobny, jeśli jądro nie jest przechowywane /
, ale nadal nie jest to bardzo dobry wskaźnik. (Przypomnienie: -c
to nie czas tworzenia, to czas zmiany metadanych. Większość systemów plików Unix nie przechowuje czasu tworzenia pliku.)
/root
prawdopodobnie zmieni się naturalnie (np. Za każdym razem, gdy ktoś tam utworzy plik).
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/
To jest inny sposób
# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch Tue 11 Jul 2017 03:57:52 PM UTC
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