Я люблю все эти ответы, и некоторые проголосовали, и извлекли уроки из них. Но мне приходит в голову, что вопрос не является четко определенным: например, моя коробка colo'ed прошла через два воплощения материнской платы и четыре полных смены жесткого диска за десять лет, в течение которых она работала, с FS, являющейся дампом | восстанавливается каждый раз. Все мои открытые ключи ssh датированы 19 февраля 2001 г .; но корневой FS был создан 11 июня 2010, 20:59:01, когда последний раз обновлялся mobo (вместе с дисками); все же другие тесты дают еще другие результаты, и мне приходит в голову: как вы определяете (не обнаруживаете) возраст системы Linux?
У меня всегда есть жесткий диск с разделом, который существует с тех пор, как я купил машину ... Я помещаю туда все необходимое для резервного копирования, когда я покупаю новый диск или создаю новый корневой раздел со свежим ядром ... Но это мне не пришло в голову :-)
Лисак
Ответы:
47
Вероятно, самый простой способ (предположим, что sda1 - это ваш / root /):
tune2fs -l / dev / sda1 | grep создан
Это должно показать вам дату создания файловой системы. Подтвержден для работы с ext2 до ext4, не уверен насчет других файловых систем!
Когда я получаю новый диск для своих компьютеров, я обычно создаю на нем разделы, а затем cp -aперезаписываю данные. Итак, вкратце: невозможно определить возраст системы во всех случаях.
Хьюберт Карио
Возможно, использование /dev/rootнемного более общее.
Camh
Я установил новую систему поверх предыдущей, сохранив sda1 FS, и, таким образом, решение MihaiM ниже (ключи ssh) было более точным.
Кольцо Ø
14
Один из механизмов, который я часто использую, заключается в проверке времени изменения (ctime) файлов в корневом домашнем каталоге. Поскольку /rootдомашний каталог создается во время установки и часто используется редко, это может обеспечить относительно хорошее приближение. Как пояснил Кайл в комментариях, поскольку ctime относится к иноду, а не к данным, изменение содержимого файла не изменит ctime.
По умолчанию lsкоманда печатает время изменения (mtime) файла. Так что если подставить в опцию ctime вот так,
ls -alct /root
Это распечатает все файлы, отобразит время создания и отсортирует по времени.
В качестве примера, вот пример 3 самых старых файлов в /rootкаталоге с одной из моих систем.
ls -alt install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root 10238 Feb 18 2010 install.log.syslog
-rw-r--r--. 1 root 129 Dec 3 2004 .tcshrc
-rw-r--r--. 1 root 100 Sep 22 2004 .cshrc
А потом, проверив время изменения
ls -alct install.log.syslog .cshrc .tcshrc
-rw-r--r--. 1 root 100 Feb 18 2010 .cshrc
-rw-r--r--. 1 root 10238 Feb 18 2010 install.log.syslog
-rw-r--r--. 1 root 129 Feb 18 2010 .tcshrc
Дата 18 февраля 2010 года определенно соответствует приблизительному времени, когда я впервые установил эту систему.
На самом деле ctime - это не время создания файла, а время изменения. Это последний раз, когда я вносил изменения в индекс. Если вы измените права доступа или владельца файла, это изменится. Скорее всего, владелец или права доступа к самой папке / root не изменились, поэтому это происходит. (Я не знаю, что на самом деле означает c - в спецификации Single Unix просто есть «time_t st_ctime время последнего изменения статуса».
Кайл Брандт,
Действительно, дата / время установки журнала. Который может или не может быть там в зависимости от вашего дистрибутива / ОС.
Koos van den Hout
6
пытаться
ls -alp /etc/ssh/ssh_host_dsa_key.pub | cut -d " " -f6
Это хорошая идея, однако некоторые недостатки были обнаружены в ключах SSH, и если вы выполняли системные обновления (и вы должны делать системные обновления!), То ключи были бы восстановлены.
Джош
Отличная идея! Однако, если ключ достаточно новый, lsдата отображается по-разному (по крайней мере, на моем компьютере), поэтому cutкоманда работает неправильно. Я бы сейчас воспользовался stat -c %y /etc/ssh/ssh_host*pub. Кроме того, мне интересно, почему времена создания файлов не получили больше любви в Linux ...
Rennex
3
Проверка оборудования была бы хорошей идеей, если у вас есть к ней доступ. Вы можете проверить систему и / или компоненты оборудования, чтобы получить представление о том, когда она была собрана.
С другой стороны, если вы можете получить доступ к экрану BIOS, там часто есть информация о дате, которую можно использовать для определения возраста компьютера.
Если вы можете получить доступ к информации SMART на жестком диске ( smartctl -a /dev/sda), возможно, вам нужно что-то предпринять. Я не вижу конкретной метки времени в SMART, но есть счетчик часов использования по крайней мере. Это обеспечит нижнюю границу возраста компьютера (поскольку, если жесткий диск проработал 100 часов, система не может быть моложе 100 часов).
Что касается проверок файловой системы, вы можете посмотреть информацию о дате /lost+found- этот каталог был создан при создании файловой системы. Дата должна совпадать с информацией о настройках из предыдущего ответа.
+1 за /lost+foundподсказку, так как эта информация доступна непривилегированным пользователям. Запуск пакетной операции, такой как tune2fs, в корневых файловых системах в качестве суперпользователя немного беспокоит. Кроме того, это решение работает с файловыми системами FreeBSD и не ext2 / 3/4.
Стефан Ласевский
3
С RedHat и его производными, довольно просто получить общее представление о версии / сборке ОС через комбинацию возраста файла и других системных файлов. Обычно я проверяю /root/anaconda-ks.cfgфайл, так как он содержит начальную настройку сервера и параметры пакета. Иногда uname -aбудет хорошая информация о дате сборки ядра. Там также будет кластер файлов с той же датой в /etc; обычно ссылки на rcx.d, скрипты rc, inittab и т. д.
Обратите внимание, что это (и трюк tune2fs) работает хуже с виртуальными машинами, если они запускаются из общего образа. Тем не менее, проверка ключей хоста ssh на моем Linode точна.
Ответы:
Вероятно, самый простой способ (предположим, что sda1 - это ваш / root /):
Это должно показать вам дату создания файловой системы. Подтвержден для работы с ext2 до ext4, не уверен насчет других файловых систем!
источник
cp -a
перезаписываю данные. Итак, вкратце: невозможно определить возраст системы во всех случаях./dev/root
немного более общее.Один из механизмов, который я часто использую, заключается в проверке времени изменения (ctime) файлов в корневом домашнем каталоге. Поскольку
/root
домашний каталог создается во время установки и часто используется редко, это может обеспечить относительно хорошее приближение. Как пояснил Кайл в комментариях, поскольку ctime относится к иноду, а не к данным, изменение содержимого файла не изменит ctime.По умолчанию
ls
команда печатает время изменения (mtime) файла. Так что если подставить в опцию ctime вот так,Это распечатает все файлы, отобразит время создания и отсортирует по времени.
В качестве примера, вот пример 3 самых старых файлов в
/root
каталоге с одной из моих систем.А потом, проверив время изменения
Дата 18 февраля 2010 года определенно соответствует приблизительному времени, когда я впервые установил эту систему.
источник
пытаться
ключи генерируются при установке ОС.
источник
ls
дата отображается по-разному (по крайней мере, на моем компьютере), поэтомуcut
команда работает неправильно. Я бы сейчас воспользовалсяstat -c %y /etc/ssh/ssh_host*pub
. Кроме того, мне интересно, почему времена создания файлов не получили больше любви в Linux ...Проверка оборудования была бы хорошей идеей, если у вас есть к ней доступ. Вы можете проверить систему и / или компоненты оборудования, чтобы получить представление о том, когда она была собрана.
С другой стороны, если вы можете получить доступ к экрану BIOS, там часто есть информация о дате, которую можно использовать для определения возраста компьютера.
Если вы можете получить доступ к информации SMART на жестком диске (
smartctl -a /dev/sda
), возможно, вам нужно что-то предпринять. Я не вижу конкретной метки времени в SMART, но есть счетчик часов использования по крайней мере. Это обеспечит нижнюю границу возраста компьютера (поскольку, если жесткий диск проработал 100 часов, система не может быть моложе 100 часов).Что касается проверок файловой системы, вы можете посмотреть информацию о дате
/lost+found
- этот каталог был создан при создании файловой системы. Дата должна совпадать с информацией о настройках из предыдущего ответа.источник
/lost+found
подсказку, так как эта информация доступна непривилегированным пользователям. Запуск пакетной операции, такой как tune2fs, в корневых файловых системах в качестве суперпользователя немного беспокоит. Кроме того, это решение работает с файловыми системами FreeBSD и не ext2 / 3/4.С RedHat и его производными, довольно просто получить общее представление о версии / сборке ОС через комбинацию возраста файла и других системных файлов. Обычно я проверяю
/root/anaconda-ks.cfg
файл, так как он содержит начальную настройку сервера и параметры пакета. Иногдаuname -a
будет хорошая информация о дате сборки ядра. Там также будет кластер файлов с той же датой в/etc
; обычно ссылки на rcx.d, скрипты rc, inittab и т. д.источник
Это также работает для систем Red Hat:
источник