W jaki sposób Distro-agnostic określa datę instalacji systemu operacyjnego?

10

Korzystam z komputera CrunchBang i próbuję napisać skrypt, który powinien zawierać datę instalacji systemu operacyjnego.

Przeszukałem i znalazłem to polecenie:

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

Drukuje

Mar 31 21:24

Nie zrozumiałem tej tail -1części, ale udało mi się dowiedzieć, że 6 USD 7 USD 8 USD to 6. 7. 8. 8. wystąpienie ostatniego wiersza, do którego odnosi się polecenie.

Zdałem sobie jednak sprawę, że rok nie może zostać uwzględniony, ponieważ nie został wyświetlony w ls -ltcpoleceniu.

Niektóre osoby sugerowały, że data /etczostała stworzona, a niektóre sprawdzają /var/log/syslogitd. Myślałem, że mogą one być nieco specyficzne dla dystrybucji.

Jaka jest twoja rekomendacja dla naprawdę dystrybucyjnego sposobu znalezienia daty instalacji systemu operacyjnego?

Animesh
źródło
1
Jak myślisz, dlaczego sprawdzanie /etcdaty utworzenia jest specyficzne dla dystrybucji?
Kevin
Niedawno przeczytałem, że istnieją niektóre dystrybucje, które mają inną hierarchię systemu plików, taką jak gobolinux, i miałem wrażenie, że może istnieć więcej dystrybucji podobnych do gobolinux.
Animesh
1
Myślę, że sprawdzanie / etc jest bardziej przenośne niż zakładanie systemu plików ext. Lub po prostu sprawdź najstarszy katalog w /.
Kevin
1
Dla kompletności zauważę, że wynik ls pokazuje czas, kiedy ma on mniej niż sześć miesięcy i rok, kiedy jest on dłuższy niż sześć miesięcy.
Random832,
@Kevin, jeśli rozpakujesz archiwum z zachowaniem uprawnień, najstarszy katalog / plik może być znacznie starszy niż data instalacji systemu.
scai

Odpowiedzi:

8

Jeśli założono, że masz system plików ext {2,3,4} i sformatowałeś główny system plików podczas instalowania systemu operacyjnego (i nie przeprowadzałeś aktualizacji z innego systemu operacyjnego bez czyszczenia), możesz użyć dumpe2fs:

% dumpe2fs -h /dev/mapper/vg_desktop-lv_root 2>&1 |grep 'Filesystem created'
Filesystem created:       Sat Jul 23 04:28:07 2011
jsbillings
źródło
Czy dane wyjściowe były przekierowywane gdzieś lub do pliku, ponieważ nic się nie wydarzyło po uruchomieniu polecenia.
Animesh
Będziesz musiał dostarczyć urządzenie do głównego systemu plików, zamiast / dev / mapper / vg_desktop-lv_root. Sprawdź wyjście, df /aby je zdobyć. Jestem pewien, że możesz to zautomatyzować.
jsbillings
Uświadomiłem sobie, że mam _zamiast -wpisywać polecenie. Teraz rozumiem. Dzięki.
Animesh
Lub że nie utworzono kopii zapasowej, sformatowano i przywrócono.
psusi
3
Mój system plików to reiserfs. Imho, szukanie / etc to lepsze podejście.
użytkownik nieznany
0

Nie znam na to żadnej formalnej metody.

To, co zawsze robiłem, to:

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

To tworzy plik o nazwie „install-”, po którym następuje bieżąca data (jeśli zostanie uruchomiony dzisiaj, będzie to install-2012-04-03) i ustawia go jako niezmienny, więc nie można go przypadkowo usunąć.

Zatem wystarczy spojrzeć na ten plik, aby zobaczyć, kiedy system operacyjny został zainstalowany.

benjarrell
źródło