Jak określić „wiek” systemu Linux od momentu instalacji?
39
Pomyślałem, że mogę łatwo sprawdzić znacznik czasu poszczególnych plików. Potem zdałem sobie sprawę, że nie byłoby tak łatwo, gdy zobaczyłem takie znaczniki czasu 1991.
Uwielbiam wszystkie te odpowiedzi, niektóre z nich głosowałem i nauczyłem się od nich. Ale przychodzi mi do głowy, że pytanie nie jest dobrze zdefiniowane: na przykład, moje pudełko z kolorem przeszło dwa wcielenia płyty głównej i cztery kompletne zmiany dysku twardego w ciągu dziesięciu lat, kiedy działało, a FS był zrzutem | przywracane za każdym razem. Wszystkie moje klucze publiczne ssh są datowane na 19 lutego 2001; ale root FS został utworzony 11 czerwca 2010, 20:59:01, kiedy mobo zostało ostatnio zaktualizowane (wraz z dyskami); jeszcze inne testy dają jeszcze inne wyniki i przychodzi mi do głowy: jak zdefiniować (nie odkryć) wiek systemu linux?
Zawsze mam dysk twardy z partycją, która istnieje, odkąd kupiłem maszynę ... Wkładam tam wszystko, czego potrzebuję, aby wykonać kopię zapasową, kiedy kupuję nowy dysk lub tworzę nową partycję root ze świeżym jądrem ... Ale to nie
przyszło
Odpowiedzi:
47
Najprostszym sposobem byłby prawdopodobnie (zakładając, że sda1 to twój / root /):
tune2fs -l / dev / sda1 | grep utworzony
Powinno to pokazywać datę utworzenia systemu plików. Potwierdzono pracę z ext2 na ext4, nie jestem pewien co do innych systemów plików!
Kiedy dostaję nowy dysk dla moich komputerów, zwykle tworzę na nim partycje, a następnie cp -aprzesyłam dane. Krótko mówiąc: nie można ustalić wieku systemu we wszystkich przypadkach.
Hubert Kario
Być może używanie /dev/rootjest nieco bardziej ogólne.
camh 12.01.11
Zainstalowałem nowy system w stosunku do poprzedniego, zachowując sda1 FS, a zatem rozwiązanie MihaiM poniżej (klucze ssh) było bardziej dokładne.
Pierścień Ø
14
Jednym z często używanych przeze mnie mechanizmów jest sprawdzanie czasu zmiany (ctime) plików w głównym katalogu głównym. Ponieważ /rootkatalog domowy jest tworzony w czasie instalacji i jest często używany, może to zapewnić względnie dobre przybliżenie. Jak wyjaśnił Kyle w komentarzach, ponieważ ctime odnosi się do i-węzła, a nie danych, modyfikacja zawartości pliku nie zmieni ctime.
Domyślnie lspolecenie wypisuje czas modyfikacji (mtime) pliku. Więc jeśli zastąpimy w takiej opcji ctime,
ls -alct /root
Spowoduje to wydrukowanie wszystkich plików, wyświetlenie czasu utworzenia i sortowanie według czasu.
Jako przykład, oto przykład 3 najstarszych plików w /rootkatalogu z jednego z moich systemów.
ls -alt install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root 10238 Feb 18 2010 install.log.syslog
-rw-r--r--. 1 root 129 Dec 3 2004 .tcshrc
-rw-r--r--. 1 root 100 Sep 22 2004 .cshrc
A następnie sprawdzając czas zmiany
ls -alct install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root 100 Feb 18 2010 .cshrc
-rw-r--r--. 1 root 10238 Feb 18 2010 install.log.syslog
-rw-r--r--. 1 root 129 Feb 18 2010 .tcshrc
Data 18 lutego 2010 r. Z pewnością śledzi przybliżony czas, w którym po raz pierwszy zainstalowałbym ten system.
ctime nie jest tak naprawdę czasem utworzenia pliku, ale raczej czasem zmiany. To był ostatni raz, kiedy zmieniłem na i-węzeł. Jeśli zmienisz uprawnienia lub właściciela pliku, zmieni się to. Możliwe, że właściciel lub uprawnienia do samego folderu / root nie uległy zmianie, dlatego ustawia się w kolejce. (Nie wiem, co faktycznie oznacza c - Specyfikacja Single Unix ma tylko „time_t st_ctime Czas ostatniej zmiany stanu”.
Kyle Brandt
Rzeczywiście, data / godzina dziennika instalatora. Który może, ale nie musi być, w zależności od twojej dystrybucji / systemu operacyjnego.
Koos van den Hout
6
próbować
ls -alp /etc/ssh/ssh_host_dsa_key.pub | cut -d " " -f6
klucze są generowane podczas instalacji systemu operacyjnego.
To dobry pomysł, jednak wykryto pewne słabości kluczy SSH i jeśli dokonałeś aktualizacji systemu (i powinieneś robić aktualizacje systemu!), Klucze zostałyby zregenerowane.
Josh
Świetny pomysł! Jeśli jednak klucz jest wystarczająco nowy, lspokazuje datę inaczej (przynajmniej na moim komputerze), więc cutpolecenie nie działa poprawnie. Chciałbym teraz użyć stat -c %y /etc/ssh/ssh_host*pub. Zastanawiam się także, dlaczego czasy tworzenia plików nie zyskały więcej miłości w Linuksie ...
Rennex
3
Sprawdzanie sprzętu byłoby dobrym wyborem, jeśli masz do niego dostęp. Możesz sprawdzić system i / lub komponenty sprzętowe, aby zorientować się, kiedy został złożony.
Alternatywnie, jeśli możesz uzyskać dostęp do ekranu BIOS, często są tam informacje o dacie, które można wykorzystać do ustalenia, ile lat ma maszyna.
Jeśli możesz uzyskać dostęp do informacji SMART na dysku twardym ( smartctl -a /dev/sda), może być coś do zrobienia. Nie widzę określonego znacznika czasu w SMART, ale jest co najmniej godzinny licznik użycia. Zapewniłoby to dolną granicę wieku maszyny (ponieważ jeśli dysk twardy działał przez 100 godzin, system nie może być młodszy niż 100 godzin).
Jeśli chodzi o kontrole systemu plików, możesz sprawdzić informacje o dacie dla /lost+found- ten katalog został utworzony podczas tworzenia systemu plików. Data powinna zgadzać się z informacjami tunefs z poprzedniej odpowiedzi.
+1 za /lost+foundpodpowiedź, ponieważ ta informacja jest dostępna dla nieuprzywilejowanych użytkowników. Uruchamianie operacji wsadowej, takiej jak tune2fs, w systemach plików root, ponieważ superużytkownik jest nieco niepokojący. Ponadto to rozwiązanie działa w systemach plików FreeBSD i innych niż ext2 / 3/4.
Stefan Lasiewski
3
Dzięki RedHat i pochodnym bardzo łatwo jest uzyskać ogólne pojęcie o wersji / archiwum systemu operacyjnego poprzez połączenie wieku plików i innych plików systemowych. Zazwyczaj sprawdzam /root/anaconda-ks.cfgplik, ponieważ zawiera on początkową konfigurację serwera i parametry pakietu. Czasami uname -abędą mieć dobre informacje o dacie kompilacji jądra. Byłby też klaster plików z tą samą datą /etc; zazwyczaj linki rcx.d, skrypty rc, inittab itp.
Zauważ, że ta (i sztuczka tune2fs) działa gorzej z maszynami wirtualnymi, jeśli są one rozdzielane ze wspólnego obrazu. Jednak sprawdzenie kluczy hosta ssh jest dokładne na moim Linode.
Odpowiedzi:
Najprostszym sposobem byłby prawdopodobnie (zakładając, że sda1 to twój / root /):
Powinno to pokazywać datę utworzenia systemu plików. Potwierdzono pracę z ext2 na ext4, nie jestem pewien co do innych systemów plików!
źródło
cp -a
przesyłam dane. Krótko mówiąc: nie można ustalić wieku systemu we wszystkich przypadkach./dev/root
jest nieco bardziej ogólne.Jednym z często używanych przeze mnie mechanizmów jest sprawdzanie czasu zmiany (ctime) plików w głównym katalogu głównym. Ponieważ
/root
katalog domowy jest tworzony w czasie instalacji i jest często używany, może to zapewnić względnie dobre przybliżenie. Jak wyjaśnił Kyle w komentarzach, ponieważ ctime odnosi się do i-węzła, a nie danych, modyfikacja zawartości pliku nie zmieni ctime.Domyślnie
ls
polecenie wypisuje czas modyfikacji (mtime) pliku. Więc jeśli zastąpimy w takiej opcji ctime,Spowoduje to wydrukowanie wszystkich plików, wyświetlenie czasu utworzenia i sortowanie według czasu.
Jako przykład, oto przykład 3 najstarszych plików w
/root
katalogu z jednego z moich systemów.A następnie sprawdzając czas zmiany
Data 18 lutego 2010 r. Z pewnością śledzi przybliżony czas, w którym po raz pierwszy zainstalowałbym ten system.
źródło
próbować
klucze są generowane podczas instalacji systemu operacyjnego.
źródło
ls
pokazuje datę inaczej (przynajmniej na moim komputerze), więccut
polecenie nie działa poprawnie. Chciałbym teraz użyćstat -c %y /etc/ssh/ssh_host*pub
. Zastanawiam się także, dlaczego czasy tworzenia plików nie zyskały więcej miłości w Linuksie ...Sprawdzanie sprzętu byłoby dobrym wyborem, jeśli masz do niego dostęp. Możesz sprawdzić system i / lub komponenty sprzętowe, aby zorientować się, kiedy został złożony.
Alternatywnie, jeśli możesz uzyskać dostęp do ekranu BIOS, często są tam informacje o dacie, które można wykorzystać do ustalenia, ile lat ma maszyna.
Jeśli możesz uzyskać dostęp do informacji SMART na dysku twardym (
smartctl -a /dev/sda
), może być coś do zrobienia. Nie widzę określonego znacznika czasu w SMART, ale jest co najmniej godzinny licznik użycia. Zapewniłoby to dolną granicę wieku maszyny (ponieważ jeśli dysk twardy działał przez 100 godzin, system nie może być młodszy niż 100 godzin).Jeśli chodzi o kontrole systemu plików, możesz sprawdzić informacje o dacie dla
/lost+found
- ten katalog został utworzony podczas tworzenia systemu plików. Data powinna zgadzać się z informacjami tunefs z poprzedniej odpowiedzi.źródło
/lost+found
podpowiedź, ponieważ ta informacja jest dostępna dla nieuprzywilejowanych użytkowników. Uruchamianie operacji wsadowej, takiej jak tune2fs, w systemach plików root, ponieważ superużytkownik jest nieco niepokojący. Ponadto to rozwiązanie działa w systemach plików FreeBSD i innych niż ext2 / 3/4.Dzięki RedHat i pochodnym bardzo łatwo jest uzyskać ogólne pojęcie o wersji / archiwum systemu operacyjnego poprzez połączenie wieku plików i innych plików systemowych. Zazwyczaj sprawdzam
/root/anaconda-ks.cfg
plik, ponieważ zawiera on początkową konfigurację serwera i parametry pakietu. Czasamiuname -a
będą mieć dobre informacje o dacie kompilacji jądra. Byłby też klaster plików z tą samą datą/etc
; zazwyczaj linki rcx.d, skrypty rc, inittab itp.źródło
Działa to również w systemach Red Hat:
źródło