Bagaimana saya mengetahui berapa lama sistem Linux diinstal?

97

Bagaimana saya dapat menemukan waktu sejak sistem Linux pertama kali diinstal, asalkan tidak ada yang mencoba menyembunyikannya?

mattdm
sumber
Apa yang Anda maksud dengan usia?
Let_Me_Be
@Biarkan: Waktu sejak diatur.
1
@Biarkan: Saya mengharapkan jawaban di sepanjang baris "periksa stempel waktu dari / some / oscure / file, itu tidak pernah dimodifikasi". Tolong jadikan itu jawaban.
2
Bukankah itu agak seperti menanyakan usia kapal [Theseus '] (en.wikipedia.org/wiki/Ship_of_Theseus)?
Tobu
2
Ketika setiap bagian dari instalasi linux telah diganti selama bertahun-tahun, apakah masih instalasi yang sama? (Sama seperti analogi asli dari sebuah kapal yang semua bagiannya perlahan diganti) saya bertanya karena partisi root saya telah mengubah disk dan sistem file, dan partisi rumah saya lebih tua dari itu. Beberapa peralatan dipersiapkan sekali sebagai gambar emas, kemudian mendapatkan nama host khusus, kunci host ssh dan fs uuids pada penyebaran. Gambar emas dapat dimodifikasi dan dibekukan lagi, seperti garis keturunan linux turnkey.
Tobu

Jawaban:

99
tune2fs -l /dev/sda1 **OR** /dev/sdb1*  | grep 'Filesystem created:'

Ini akan memberi tahu Anda ketika sistem file dibuat.

* = Di kolom pertama df /Anda dapat menemukan partisi yang tepat untuk digunakan.

RailOcelot
sumber
4
Biasanya /dev/sda1atau sesuatu seperti itu (apa pun yang df /ditampilkan di kolom pertama), tetapi prinsipnya sehat.
Gilles
1
Hei, itu mudah diketahui, terima kasih. Dan informasi ini juga bertahan menyalin sistem file. +1.
Faheem Mitha
4
Solusinya bagus, tetapi filesystem tergantung dan membutuhkan hak akses root.
golem
7
+1. Namun, saya harus mencatat bahwa desktop saya saat ini dibuat sekitar tahun 1994. Benar-benar semua tentang itu telah berubah beberapa kali sejak itu (termasuk disk, dan tipe sistem file yang saya gunakan) tetapi masih sistem yang sama. Metode ini hanya akan, paling tidak, memberi tahu saya tanggal perpindahan terbaru ke sistem file baru.
cas
Ini seharusnya bukan jawaban yang diterima karena hanya berfungsi dengan ext2 (mungkin hingga ext4?) Yang tidak saya gunakan.
soger
23

Periksa tanggal filesystem root dengan dumpe2fs. Saya benar-benar tidak bisa memikirkan bagaimana hal itu bisa terjadi selain dari tanggal yang Anda cari:

dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'
pboin
sumber
1
... atautune2fs -l
forcefsck
2
Anda lupa menyebutkan bahwa ini hanya berlaku untuk sistem file ext2 / ext3 / ext4.
Let_Me_Be
Anda mendapatkan tanggal yang salah pada beberapa mesin saya, di mana saya telah memutakhirkan hard drive, dan hanya menyalin instalasi selesai.
derobert
1
@derobert, saya masih berpikir jawaban saya akan benar, mengingat pertanyaan OP. Disk baru tidak berbeda dengan RAM baru - Anda masih memiliki 'instalasi' yang sama meskipun Anda membuka disk baru di ...
pboin
@pboin Tidak, ketika saya menyalin instal, ini disk yang lebih besar, jadi saya partisi ulang dan mkfs (kemudian gunakan tar / cp untuk menyalinnya, bukan dd). Bahkan mungkin sistem file yang berbeda (misalnya, ext2 -> ext3 -> ext4) Jadi Anda akan mendapatkan waktu saya menyalin instalasi selesai. Begitulah caranya selain dari tanggal yang dicari OP.
derobert
16

Ada beberapa kurma tergeletak di sekitar.

  • Semua file memiliki tanggal.
  • File log memiliki tanggal di dalamnya.

Pada Debian atau Ubuntu dan turunannya, lihat /var/log/installer/syslogjawaban definitif jika ada, itu adalah bagian dari log instilasi.

Namun berhati-hatilah, ini tidak dijamin. (lihat jawaban / komentar lain untuk beberapa alasan itu mungkin tidak berfungsi.)

ctrl-alt-delor
sumber
Ini mungkin khusus untuk Debian / Ubuntu.
Faheem Mitha
@Faheem Mitha: File / direktori yang sama digunakan untuk Ubuntu.
BillThor
1
@ Bill: Ya, saya katakan khusus untuk Debian / Ubuntu. Berarti resep ini akan berfungsi baik untuk Debian dan Ubuntu, tetapi mungkin tidak untuk distribusi Linux lain (non-Debian).
Faheem Mitha
Tetapi tidak semua file MEMILIKI TANGGAL PENCIPTAAN. Tanggal lahir AFAIK hanya diperkenalkan di ext4, dan itu bukan POSIX.
Konrad Gajewski
@KonradGajewski Tapi apakah jawaban ini, atau komentarnya menyebutkan tanggal pembuatan file.
ctrl-alt-delor
12

Pada distribusi berbasis Red Hat (mis. CentOS, Scientific, Oracle dll) Anda dapat menggunakan:

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.

atau

rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST
el_viejillo
sumber
1
Bagaimana bisa rpm -qimemberi saya Install Date: Mon 07 Jul 2014 03:20:44 PM UTC, sementara tune2fskata Filesystem created: Sat Dec 20 23:41:41 2014?
Benjamin
Pada VM Azure saya semua memiliki waktu yang sama, jadi rpm sama sekali tidak dapat diandalkan
Chris
10

Solusi yang paling netral untuk sistem file dan distribusi (yang bisa saya buat) adalah dengan menggunakan file tertua yang diberikan oleh ls -lact /etc, yang melihat metadata setiap file untuk waktu pembuatan. Meskipun ini dapat di-gamed, itu tidak terpengaruh oleh touchatau file yang dibuat dengan mengekstraksi arsip (misalnya tar -puntuk mempertahankan stempel waktu).

Saya pikir yang terbaik untuk melihat file daripada direktori sejak direktori yang mengubah mereka metadata waktu penciptaan ketika isinya berubah (mungkin seseorang dapat menjelaskan mengapa itu?)

ls -lact --full-time /etc |tail

Sistem yang tidak memiliki GNU Coreutils harus menghapus --full-timeopsi (urutan pengurutan akan tetap benar dan Anda akan tetap dapat hari itu). Anda bisa mendapatkan waktu pembuatan dari metadata file dengan stat FILE |grep Change(jalankan pada file tertua yang didaftar oleh ls -lact).

Pada sistem non-Linux lainnya, statkemungkinan memiliki informasi itu dalam pengaturan yang sedikit berbeda, mungkin memerlukan bendera yang berbeda. Perhatikan bahwa ini masih menggunakan metadata file dan akurasi tidak dijamin.

Juga perhatikan bahwa statdari GNU Coreutils memiliki waktu "Kelahiran" yang cenderung salah (Linux dengan hasil ext40 menunjukkan itu tidak diketahui, FreeBSD dengan UFS menunjukkan waktu "Kelahiran" yang lebih tua dari sistem yang saya tanyakan). Nilai yang benar terdaftar sebagai waktu "Ubah".

Jika Anda ingin mendapatkan mewah dan hanya waktu penciptaan file tertua di /etc:

ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'

Perintah ini bekerja untuk saya pada sistem FreeBSD lama (UFS, tidak ada utilitas GNU):

stat "/etc/$(ls -act /etc |tail -1)" |awk -F\" '{print $6}'

(Ya, ini mem ls- parsing dan itu tabu, tetapi seharusnya tidak ada nama file yang nakal /etc.)

Anda juga dapat menggunakan statuntuk mendapatkan format waktu lainnya. Misalnya, untuk mendapatkan waktu pembuatan dalam Unix epoch : stat -c %Z FILE(dengan GNU, perhatikan bahwa %Z"waktu perubahan status terakhir" tetapi itu adalah tanda yang benar untuk sistem Linux dan BSD saya, seperti yang disebutkan di atas; %Wadalah "waktu kelahiran file" ) atau stat -f %c FILE(dengan BSD).

Adam Katz
sumber
6

Di Fedora, installer anaconda menyimpan detail konfigurasi instal Anda di folder home root, yang dapat memberi Anda beberapa ide.

Pada Debian (setidaknya yang lebih baru), beberapa log dari instalasi disimpan /var/log/installer/. Versi lama menyimpannya /var/log/installer.*. Setidaknya itu kembali ke tahun 2003.

rajaganesh87
sumber
4

Seperti yang diminta oleh OP.

Jika Anda mencari waktu, ketika sistem diatur, tidak ada cara untuk menentukan itu. Untuk satu, sistem mungkin telah dikloning (tidak diinstal) yang secara efektif akan memalsukan waktu pembuatan file.

Anda dapat memperkirakan usia dengan mencari file terlama.

Biarkan aku menjadi
sumber
mattdm benar; Anda bisa mendapatkan waktu akses, waktu modifikasi, dan mengubah waktu; Waktu adalah yang terakhir. Lihat pos SO ini
Michael Mrozek
4
ls -alct /|tail -1|awk '{print $6, $7, $8}'
altmas5
sumber
2

Saya melihat file tertua di / boot (di atas "ls-ltr / boot". Seringkali ada sektor boot asli dari instalasi pertama di sana. Pada sistem tertua saya ini memberikan tanggal instalasi asli, meskipun telah mengganti semuanya dalam mesin dan menyalin isi sistem file sekitar beberapa kali :)

pjc50
sumber
2

Saya telah mencari alat yang serupa, dan yang terbaik yang bisa saya lakukan adalah ls -lAhF /etc/hostname, cukup umur file hostname. Saya pikir, secara umum, nama host suatu sistem diatur di awal, dan dibiarkan tidak berubah selama umur sistem. Tanggal pembuatan filesystem sangat membantu, tetapi bisa menyesatkan. Saya, misalnya, sering menggunakan gambar mesin virtual, yang telah saya instal beberapa waktu lalu, menyalinnya, mengubah nama host dan membuat server baru darinya. Oleh karena itu, dalam kasus saya /etc/hostnameindikasi lebih baik daripadatune2fs -l /dev/sda1

pengguna1968963
sumber
1

Jika Anda menggunakan LVM selama instalasi, Anda dapat memeriksa tanggal pembuatan Volume Logika yang dilakukan pada hari instalasi, misalnya:

$ sudo lvdisplay /dev/mapper/KUbuntu_VG-rootFS | grep Creation
  LV Creation host, time kubuntu, 2014-12-28 20:52:15 +0100
SebMa
sumber
0

ls -alct /root -> direktori home root dibuat saat instalasi

jet
sumber
1
Tapi itu mungkin telah berubah setelahnya. Waktu /nyala sedikit kurang mungkin telah berubah jika kernel tidak disimpan /, tetapi itu masih bukan indikator yang sangat baik. (Pengingat: -cbukan waktu pembuatan, ini adalah waktu perubahan metadata. Sebagian besar sistem file unix tidak menyimpan waktu pembuatan file.)
Gilles
tunjukkan kepada saya kapan saja yang tidak dapat diubah :)
jet
Pertanyaan itu memiliki asumsi "asalkan tidak ada yang mencoba menyembunyikannya". Waktu /rootmungkin akan berubah secara alami (misalnya setiap kali seseorang membuat file di sana).
Gilles
0

Sejak beberapa waktu yang lalu, saya biasanya menginstal pada waktu yang bersamaan bahwa distribusi linux paket yang disebut Tuptime , yang menyimpan statistik yang berguna tentang waktu berjalan, startup, shutdowns ...

Untuk pertanyaan Anda, baris "Kehidupan sistem" memiliki informasi itu. Sebagai contoh:

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

Info lebih lanjut: https://github.com/rfrail3/tuptime/

Rfraile
sumber
0

Ini cara lain

# rpm -q -last basesystem
basesystem-10.0-7.el7.noarch                  Tue 11 Jul 2017 03:57:52 PM UTC
Shirish Shukla
sumber
-4

Saya menemukan file sederhana. nama "1". Mungkin file pertama.

▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1
eexpress utopis
sumber
mengapa downvote. Waktu ini benar-benar menunjukkan waktu instalasi sistem terakhir.
utopic eexpress
Saya tidak memiliki file ini di Linux saya.
Kevin Lemaire