Как узнать время с момента первой установки системы 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