Як визначити "вік" системи Linux з моменту встановлення?


39

Я думав, що можу легко перевірити часові позначки певних файлів. Тоді я зрозумів, що це буде не так просто, коли я побачив такі часові позначки 1991.


Я люблю всі ці відповіді, і відхилив деякі, і навчився їх. Але мені здається, що питання недостатньо чітко визначено: наприклад, у моїй розфарбованій коробці було проведено два втілення материнської плати та чотири повні зміни жорсткого диска за десять років роботи, коли FS перебуває у відвантаженні | щоразу відновлюється. Усі мої відкриті ключі ssh датовані 19 лютого 2001 року; але root FS був створений 11 червня 2010, 20:59:01, коли mobo востаннє оновлено (разом із дисками); проте інші тести дають ще різні результати, і мені здається: як ви визначаєте (не виявляєте) вік системи Linux?
MadHatter підтримує Моніку

4
Мабуть, це також відоме як проблема корабля Тесея; див. en.wikipedia.org/wiki/Ship_of_Theseus .
MadHatter підтримує Моніку

У мене завжди є hdd з розділом, який існує з моменту придбання машини ... Я кладу всі речі, які мені потрібні, щоб створити резервну копію там, коли купую новий диск або створюю новий кореневий розділ зі свіжим ядром ... Але це мені не
прийшло в голову

Відповіді:


47

Мабуть, найпростіший спосіб (припускаючи, що sda1 - це ваш / root /):

tune2fs -l / dev / sda1 | grep створено

Це має відображати дату створення файлової системи. Підтверджено, що працює на ext2 to ext4, не впевнений в інших файлових системах!


1
Коли я отримую новий диск для своїх ПК, я зазвичай створюю на ньому розділи, а потім передаю cp -aдані. Отже, коротко: визначити вік системи не в усіх випадках.
Хуберт Каріо

Можливо, використання /dev/rootтрохи більш загальне.
camh

Я встановив нову систему над попередньою, зберігаючи sda1 FS, і таким чином рішення MihaiM внизу (ssh-клавіші) було більш точним.
Кільце Ø

14

Один з механізмів, який я часто використовую, - це перевірити час зміни (ctime) для файлів у головному домашньому каталозі. Оскільки /rootдомашній каталог створюється під час встановлення та часто використовується рідко, це може забезпечити порівняно гарне наближення. Як уточнив Кайл у коментарях, оскільки ctime посилається на inode, а не на дані, зміна вмісту файлу не змінить 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 року, безумовно, відстежує приблизний час, коли я вперше встановив би цю систему.


4
ctime насправді не час створення файлу, а швидше час зміни. Це останній раз, коли я змінювався в inode. Якщо ви зміните дозволи або власника файлу, це зміниться. Швидше за все, власник або дозволи самої папки / root не змінилися, тому це вишикується. (Я не знаю, на що насправді виступає c - специфікація Single Unix просто "time_t st_ctime Час останньої зміни статусу".
Kyle Brandt

Дійсно, дата / час журналу інсталятора. Які можуть бути, а можуть і не бути, залежно від вашого розповсюдження / ос.
Koos van den Hout

6

спробуйте

ls -alp /etc/ssh/ssh_host_dsa_key.pub | cut -d " " -f6

ключі генеруються при встановленні ОС.


3
Це гарна ідея, проте в ключах SSH були виявлені деякі недоліки, і якщо ви зробили оновлення системи (і вам слід робити оновлення системи!), То ключі були б відновлені.
Джош

Відмінна ідея! Однак якщо ключ достатньо новий, lsдата показує по-різному (принаймні на моїй машині), щоб cutкоманда не працювала правильно. Я б зараз користувався stat -c %y /etc/ssh/ssh_host*pub. Крім того, мені цікаво, чому час створення файлів не
набув

3

Перевірка обладнання буде хорошим вибором, якщо у вас є доступ до нього. Ви можете оглянути систему та / або апаратні компоненти, щоб отримати гарне уявлення про час її збирання.

Крім того, якщо ви можете отримати доступ до екрана BIOS, там часто є інформація про дату, яка може бути використана для визначення віку машини.

Якщо ви можете отримати доступ до інформації SMART на жорсткому диску ( smartctl -a /dev/sda), там може щось продовжувати. Я не бачу конкретної часової позначки в SMART, але існує принаймні години використання лічильника. Це забезпечить нижню межу того, скільки років машині (адже якщо жорсткий диск працює протягом 100 годин, система не може бути молодшою ​​за 100 годин).

Що стосується перевірок файлової системи, ви можете подивитися інформацію про дату для /lost+found- цього каталогу було створено під час створення файлової системи. Дата на ній повинна відповідати інформації про налаштування з попередньої відповіді.


+1 для /lost+foundпідказки, оскільки ця інформація доступна непривілейованим користувачам. Запуск пакетної операції на зразок tune2fs в кореневих файлових системах як суперпользователь трохи турбує. Крім того, це рішення працює у файлових системах FreeBSD та non-ext2 / 3/4.
Стефан Ласєвський

3

З RedHat та його похідними досить просто отримати загальне уявлення про версію ОС / vintage через комбінацію віку файлів та інших системних файлів. Я зазвичай перевіряю /root/anaconda-ks.cfgфайл, оскільки він містить початкові параметри сервера та параметри пакету. Іноді uname -aбуде хороша інформація про дату збирання ядра. Також буде кластер файлів з тією ж датою в /etc; зазвичай посилання rcx.d, скрипти rc, inittab тощо.


3

Це також працює для систем Red Hat:

rpm -qi basesystem | grep "Install Date"

Зауважте, що це (і трюк tune2fs) працює менш вірно з віртуальними машинами, якщо вони скручуються із загального зображення. Хоча перевірка ключів хостів ssh точна на моєму Linode.
cjc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.