Как узнать, как давно была установлена ​​система 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. Золотые изображения могут быть изменены и заморожены снова, как линия Линукс под ключ.
Тобу

Ответы:


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

Это скажет вам, когда была создана файловая система.

* = В первом столбце df /вы можете найти точный раздел для использования.


4
Обычно /dev/sda1или что-то в этом роде (что df /показано в первом столбце), но принцип здравый.
Жиль

1
Эй, это удобно знать, спасибо. И эта информация сохраняется и при копировании файловой системы. +1.
Фахим Митха

4
Решение хорошее, но зависит от файловой системы и требует прав суперпользователя.
Голем

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 22.10.12

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

16

Есть несколько дат, лежащих вокруг.

  • Все файлы имеют даты.
  • В файлах журналов есть даты.

В Debian или Ubuntu и их производных см. /var/log/installer/syslogДля окончательного ответа, если он существует, он является частью журнала инстилляции.

Но будьте осторожны, это не гарантировано. (см. другие ответы / комментарии по некоторым причинам, которые могут не работать.)


Это может быть специфично для Debian / Ubuntu.
Фахим Митха

@Faheem Mitha: тот же файл / каталог используется для Ubuntu.
BillThor

1
@ Билл: Да, я сказал, что конкретно для Debian / Ubuntu. Это означает, что рецепт будет работать как для Debian, так и для Ubuntu, но, возможно, не для других (не основанных на Debian) дистрибутивов Linux.
Фахим Митха

Но не все файлы имеют дату создания. 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 совсем не надежен
Chris

10

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

Я думаю , что лучше смотреть на файлы , а не каталоги , так как каталоги действительно меняют свое время создания метаданных , когда их содержание меняется (возможно , кто - то может пролить свет на то, почему это?)

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

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

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

Также обратите внимание, что 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

По просьбе ОП.

Если вы ищете время, когда система была настроена, нет способа определить это. С одной стороны, система могла быть клонирована (не установлена), что фактически подделало бы время создания файла.

Вы можете оценить возраст путем поиска самых старых файлов.


матдм прав; Вы можете получить время доступа, время модификации и время изменения; Ctime является последним. Смотрите это ТАК сообщение
Майкл Мрозек


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 -> корневой домашний каталог создается во время установки


1
Но это могло измениться потом. Время включения /немного меньше, если ядро ​​не хранится /, но оно все еще не очень хороший показатель. (Напоминание: -cэто не время создания, это время изменения метаданных. Большинство файловых систем unix не хранят время создания файла.)
Жиль

покажи мне любое время, которое нельзя изменить :)
jet

Вопрос имел предположение «при условии, что никто не пытался его скрыть». Вероятно, ctime /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

почему понизить Это время действительно указывает на время последней установки системы.
Утопический Экспресс

У меня нет этого файла в моем Linux.
Кевин Лемэр,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.