Як знайти, як давно була встановлена ​​система Linux?


97

Як я можу знайти час з моменту встановлення системи Linux за умови, що ніхто не намагався її приховати?


Що ви маєте на увазі під віком?
Let_Me_Be

@Let: час, коли він був створений.

1
@Let: Я очікував відповіді в рядку "перевірити часову позначку / some / oscure / file, вона ніколи не змінюється". Будь ласка, зробіть це відповіддю.

2
Хіба це не так, як запитати вік [корабля Тесея] (en.wikipedia.org/wiki/Ship_of_Theseus)?
Тобу

2
Коли кожну частину установки Linux замінювали протягом багатьох років, це все-таки однакова установка? (Так само, як і оригінальну аналогію корабля, у якого всі його частини повільно замінювались) Я запитую, оскільки мій кореневий розділ змінив диски та файлові системи, а мій домашній розділ старіший за це. Деякі пристрої готуються один раз як золоті зображення, потім отримують власні імена хостів, ssh хост-ключі та fs uuids при розгортанні. Зображення із золота можна знову змінювати та заморожувати, як-от лінійка Linux під ключ.
Тобу

Відповіді:


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

Це підкаже, коли була створена файлова система.

* = У першому стовпці df /ви можете знайти точний розділ, який потрібно використовувати.


4
Зазвичай /dev/sda1або щось подібне (що б не було df /показано в першій колонці), але принцип - це звук.
Жиль

1
Гей, це зручно знати, дякую. І ця інформація переживає і копіювання файлової системи. +1.
Faheem Mitha

4
Рішення хороше, але файлова система залежить і вимагає привілеїв root.
голем

7
+1. Однак я маю зазначити, що мій поточний робочий стіл був створений близько 1994 року. З цього часу абсолютно все про нього змінювалося багато разів (включаючи диски та тип файлової системи, які я використовую), але це все одно та сама система. Цей метод лише в кращому випадку підкаже мені дату останнього переходу до нової файлової системи.
cas

Це не має бути прийнятою відповіддю, оскільки вона працює лише з ext2 (можливо, до ext4?), Яку я не використовую.
soger

23

Перевірте дату кореневої файлової системи за допомогою dumpe2fs. Я не можу реально подумати, як це могло бути інакше, ніж дата, яку ви шукаєте:

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

1
... абоtune2fs -l
forcefsck

2
Ви забули згадати, що це стосується лише файлової системи ext2 / ext3 / ext4.
Let_Me_Be

Ви отримаєте неправильну дату на декількох моїх машинах, де я оновив жорсткі диски і просто скопіював установку.
дероберт

1
@derobert, я все ще думаю, що моя відповідь буде правильною, враховуючи питання щодо ОП. Новий диск нічим не відрізняється від нової оперативної пам’яті - у вас все одно є та сама «установка», навіть якщо ви вискакували новий диск у ...
pboin

@pboin Ні, коли я копіюю установку на її більший диск, тому я перерозподіляю і mkfs (тоді використовую tar / cp, щоб скопіювати її, а не dd). Можливо, це навіть інша файлова система (наприклад, ext2 -> ext3 -> ext4). Ви отримаєте час, коли я скопіював установку. Ось як це могло бути відмінне від дати, яку шукає ОП.
derobert

16

Є кілька фінішних дат.

  • Усі файли мають дати.
  • Файли журналів мають у них дати.

На Debian або Ubuntu та їх похідні дивіться /var/log/installer/syslogостаточну відповідь, чи існує вона, що вона є частиною журналу інстиляції.

Але будьте обережні, це не гарантується. (Дивіться інші відповіді / коментарі з деяких причин, які можуть не працювати.)


Це може бути специфічно для Debian / Ubuntu.
Faheem Mitha

@Faheem Mitha: той самий файл / каталог використовується для Ubuntu.
BillThor

1
@Bill: Так, я сказав, що стосується Debian / Ubuntu. Це означає, що рецепт може працювати як для Debian, так і для Ubuntu, але, можливо, не для інших (не на основі Debian) дистрибутивів Linux.
Faheem Mitha

Але не всі файли мають дату створення. Дата народження AFAIK була введена лише в ext4, і це все одно не POSIX.
Конрад Гаєвський

@KonradGajewski Однак ця відповідь або будь-який із її коментарів згадують дату створення файлу.
ctrl-alt-delor

12

У дистрибутивах на основі Red Hat (наприклад, CentOS, Scientific, Oracle тощо) ви можете використовувати:

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.

або

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

1
Як приходить rpm -qiмені Install Date: Mon 07 Jul 2014 03:20:44 PM UTC, поки tune2fsкаже Filesystem created: Sat Dec 20 23:41:41 2014?
Бенджамін

На моєму комп'ютерному комп'ютері Azure всі мають один і той же час, тому rpm взагалі не є надійним
Кріс,

10

Найбільш нейтральне для файлової системи та розповсюдження рішення (яке я можу придумати) - це використовувати найдавніший файл, який надає компанія ls -lact /etc, яка розглядає метадані кожного файлу за час створення. Хоча це може бути ігровим, на нього не впливають touchфайли, створені шляхом вилучення архівів (наприклад, tar -pдля збереження часових позначок).

Я думаю , що краще дивитися на файли , а не каталоги , так як каталоги дійсно змінюють свого часу створення метаданих , коли їх зміст змінюється (можливо , хто - то може пролити світло на те, чому це?)

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

Системи, яким не вистачає GNU Coreutils, повинні вилучити цю --full-timeопцію (порядок сортування все одно буде правильним, і ви все одно отримаєте день). Ви можете отримати час створення з метаданих файлу за допомогою stat FILE |grep Change(запустіть це у найстарішому файлі, перерахованому ls -lact).

В інших системах, statщо не є Linux, ця інформація , ймовірно, має дещо інше розташування, можливо, вимагаючи різних прапорів. Зауважте, що для цього все ще використовуються метадані файлу, а точність не гарантована.

Також зауважте, що statу GNU Coreutils є час "народження", який, як правило, не є правильним (Linux з ext4 поступає, 0щоб вказати, що це невідомо; FreeBSD з UFS показав час "народження", що старше системи, яку я запитував). Правильне значення було вказане як його "Змінити" час.

Якщо ви хочете пофантазувати і отримати лише час створення найстарішого файлу, /etcвиконайте такі дії:

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

Ця команда працювала для мене у старій системі FreeBSD (UFS, без утилітів GNU):

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

(Так, це розбирає, lsі це табу, але файли не повинні бути помилково названими /etc.)

Ви також можете використовувати statінші формати часу. Наприклад, щоб отримати час створення в епоху Unix : stat -c %Z FILE(з GNU, зауважте, що %Z"час останньої зміни статусу", але це правильний прапор для моїх систем Linux та BSD, як зазначено вище; %Wце "час народження файлів" ) або stat -f %c FILE(з BSD).


6

У Fedora, інсталятор anaconda зберігає відомості про конфігурацію вашої установки в домашній папці root, що може дати вам деяке уявлення.

У Debian (принаймні новіші) зберігається кілька журналів із встановлення /var/log/installer/. Старіші версії зберігали їх у /var/log/installer.*. Принаймні, це ще в 2003 році.


4

Як вимагає ОП.

Якщо ви шукаєте час, коли система налаштовувалася, немає способу визначити це. Для одного, система, можливо, була клонована (не встановлена), що фактично підробляло б час створення файлу.

Ви можете оцінити вік, шукаючи найдавніші файли.


mattdm має рацію; ви можете отримати час доступу, час модифікації та змінити час; ctime - остання. Дивіться цей пост SO
Michael Mrozek


2

Я дивлюся на найстаріший файл у / boot (вгорі "ls -ltr / boot". Часто є оригінальний завантажувальний сектор з першого встановлення. На моїй найстарішій системі це дає дату оригінальної установки, незважаючи на те, що замінила все в машина і кілька разів скопіювала вміст файлової системи :)


2

Я шукав подібний інструмент, і найкраще, що я міг придумати, - це ls -lAhF /etc/hostnameпросто вік файлу імені хоста. Я думаю, що, як правило, ім'я хоста системи встановлюється на початку, і залишається незмінним протягом життя системи. Дата створення файлової системи є певною мірою корисною, але може ввести в оману. Наприклад, я часто використовую зображення віртуальних машин, які я встановив деякий час тому, копіюю його, змінюю ім'я хоста і роблю з нього новий сервер. Тому в моєму випадку /etc/hostnameкраща вказівка, ніжtune2fs -l /dev/sda1


1

Якщо під час встановлення ви використовували LVM, ви можете перевірити дату створення логічного тома, зробленого в день встановлення, наприклад:

$ 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 -> головний домашній каталог root створюється під час встановлення


1
Але це могло змінитися згодом. Час включення /трохи рідше зміниться, якщо ядро ​​не буде збережено /, але це все ще не дуже хороший показник. (Нагадування: -cце не час створення, це час зміни метаданих. Більшість файлів Unix не зберігає час створення файлу.)
Gilles

покажіть мені будь-який час, який неможливо змінити :)
jet

Питання мало припущення, "за умови, що ніхто не намагався його приховати". Час роботи /rootможе, природно, змінитися (наприклад, кожен раз, коли хтось створює файл там).
Жиль

0

З часу тому я зазвичай встановлював, коли linux розповсюджував пакет під назвою Tuptime , який зберігає корисну статистику про час роботи, запуски, вимкнення ...

Що стосується ваших запитань, рядок "Життя системи" містить цю інформацію. Наприклад:

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

Більше інформації: https://github.com/rfrail3/tuptime/



-4

Я знайшов простий файл. назва "1". Можливо, це перший файл.

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

чому знищити. Цей час дійсно вказує на останній час встановлення системи.
utopic eexpress

У мене немає цього файлу в моєму Linux.
Кевін Лімер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.