Что такое дистро-агностический способ определения даты установки ОС?

10

Я нахожусь на машине CrunchBang и пытаюсь написать сценарий, для которого необходимо указать дату установки ОС.

Я искал и нашел эту команду:

ls -lct /etc | tail -1 | awk '{print $6, $7, $8}'

Это печатает

Mar 31 21:24

Я не понял tail -1части, но смог выяснить, что $ 6 $ 7 $ 8 - это 6-е, 7-е, 8-е вхождения последней строки, на которую ссылается команда.

Однако я понял, что нельзя включить год, так как год не отображался в ls -ltcкоманде.

Некоторые люди предлагали найти дату, /etcа некоторые проверяли и /var/log/syslogт. Д. Я подумал, что они могут быть немного специфичны для дистрибутива.

Что вы посоветуете для действительно дистрибутивного способа определения даты установки ОС?

Animesh
источник
1
Как вы думаете, почему /etcдата создания чека является дистрибутивной?
Кевин
Недавно я читал, что есть некоторые дистрибутивы с другой иерархией файловой системы, такие как gobolinux, и у меня сложилось впечатление, что может быть больше дистрибутивов, похожих на gobolinux.
Анимеш
1
Я думаю, что проверка / etc более переносима, чем допущение файловой системы ext. Или просто проверьте самый старый каталог в /.
Кевин
1
Просто для полноты отметим, что вывод ls показывает время, когда ему меньше шести месяцев, и год, когда ему больше шести месяцев.
Random832
@Kevin Если вы распакуете архив с сохранением прав доступа, самый старый каталог / файл может быть намного старше даты установки системы.
Scai

Ответы:

8

Если предполагается, что у вас есть файловая система ext {2,3,4}, и вы отформатировали корневую файловую систему при установке ОС (и не выполняли обновления с другой ОС без вайпов), вы можете использовать dumpe2fs:

% dumpe2fs -h /dev/mapper/vg_desktop-lv_root 2>&1 |grep 'Filesystem created'
Filesystem created:       Sat Jul 23 04:28:07 2011
jsbillings
источник
Был ли перенаправлен вывод куда-либо или файл, потому что ничего не произошло, когда я запустил команду.
Анимеш
Вам придется предоставить устройство для вашей корневой файловой системы вместо / dev / mapper / vg_desktop-lv_root. Проверьте вывод, df /чтобы получить его. Я уверен, что вы могли бы автоматизировать это.
Jsbillings
Я понял, что _вместо -ввода набрал команду. Я получил дату сейчас. Спасибо.
Анимеш
Или что вы не сделали резервную копию, переформатировать и восстановить.
psusi
3
Моя файловая система reiserfs. Imho, поиск / etc - лучший подход.
пользователь неизвестен
0

Я не знаю ни одного формального метода для этого.

То, что я всегда делал, это:

touch /install-`date +"%F"` && chattr +i /install-20*

Это создает файл с именем 'install-', за которым следует текущая дата (если запустить его сегодня, это будет install-2012-04-03) и устанавливает его как неизменяемый, поэтому он не может быть удален случайно.

Тогда нужно просто посмотреть на этот файл, чтобы увидеть, когда была установлена ​​ОС.

benjarrell
источник