Как узнать время с момента первой установки системы Linux, если никто не пытался ее скрыть?
Как узнать время с момента первой установки системы Linux, если никто не пытался ее скрыть?
Ответы:
tune2fs -l /dev/sda1 **OR** /dev/sdb1* | grep 'Filesystem created:'
Это скажет вам, когда была создана файловая система.
* = В первом столбце df /вы можете найти точный раздел для использования.
/dev/sda1или что-то в этом роде (что df /показано в первом столбце), но принцип здравый.
Проверьте дату корневой файловой системы с помощью dumpe2fs. Я не могу думать о том, как это может быть что-то кроме даты, которую вы ищете:
dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'
tune2fs -l
Есть несколько дат, лежащих вокруг.
В Debian или Ubuntu и их производных см. /var/log/installer/syslogДля окончательного ответа, если он существует, он является частью журнала инстилляции.
Но будьте осторожны, это не гарантировано. (см. другие ответы / комментарии по некоторым причинам, которые могут не работать.)
В дистрибутивах 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
rpm -qiдает мне Install Date: Mon 07 Jul 2014 03:20:44 PM UTC, а tune2fsговорит Filesystem created: Sat Dec 20 23:41:41 2014?
Наиболее нейтральным решением для файловой системы и дистрибуции (которое я могу придумать) является использование самого старого файла, указанного в нем 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).
В Fedora установщик anaconda хранит сведения о конфигурации вашей установки в домашней папке root, что может дать вам некоторое представление.
В Debian (по крайней мере, более поздние) несколько журналов установки установлены в /var/log/installer/. Старые версии хранят их в /var/log/installer.*. По крайней мере, в 2003 году.
По просьбе ОП.
Если вы ищете время, когда система была настроена, нет способа определить это. С одной стороны, система могла быть клонирована (не установлена), что фактически подделало бы время создания файла.
Вы можете оценить возраст путем поиска самых старых файлов.
Я смотрю на самый старый файл в / boot (вверху "ls -ltr / boot". Часто там находится оригинальный загрузочный сектор после первой установки. В моей самой старой системе это дает дату первоначальной установки, несмотря на то, что все было заменено в машина и скопировала содержимое файловой системы примерно несколько раз :)
Я искал подобный инструмент, и лучшее, что я мог придумать, было ls -lAhF /etc/hostnameпросто возраст файла имени хоста. Я думаю, что, как правило, имя хоста системы задается в начале и остается неизменным в течение срока службы системы. Дата создания файловой системы весьма полезна, но может вводить в заблуждение. Я, например, часто использую образ виртуальных машин, который я установил некоторое время назад, копирую его, меняю имя хоста и создаю из него новый сервер. Поэтому в моем случае /etc/hostnameлучше индикация, чемtune2fs -l /dev/sda1
ls -alct /root -> корневой домашний каталог создается во время установки
/немного меньше, если ядро не хранится /, но оно все еще не очень хороший показатель. (Напоминание: -cэто не время создания, это время изменения метаданных. Большинство файловых систем unix не хранят время создания файла.)
/rootизменится естественным образом (например, каждый раз, когда кто-то создает файл).
Некоторое время назад я обычно устанавливаю во время распространения 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/
Это еще один способ
# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch Tue 11 Jul 2017 03:57:52 PM UTC
Я нашел простой файл. имя "1". Может быть, это первый файл.
▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1