Як я можу знайти час з моменту встановлення системи 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
).
В інших системах, stat
що не є Linux, ця інформація , ймовірно, має дещо інше розташування, можливо, вимагаючи різних прапорів. Зауважте, що для цього все ще використовуються метадані файлу, а точність не гарантована.
Також зауважте, що 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
-> головний домашній каталог 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