ฉันจะค้นหาได้นานแค่ไหนที่ติดตั้งระบบ Linux


97

ฉันจะหาเวลาได้อย่างไรตั้งแต่ติดตั้งระบบลีนุกซ์ครั้งแรกโดยที่ไม่มีใครพยายามซ่อนมันไว้?


คุณหมายถึงอะไรตามอายุ?
Let_Me_Be

@Let: เวลาตั้งแต่ตั้งค่า

1
@ ให้: ฉันคาดหวังคำตอบตามบรรทัดของ "ตรวจสอบการประทับเวลาของ / some / oscure / ไฟล์มันไม่เคยแก้ไข" กรุณาตอบว่า

2
ไม่เหมือนถามอายุของ [เรือของเธเซอุส] (en.wikipedia.org/wiki/Ship_of_Theseus) ใช่ไหม
Tobu

2
เมื่อทุกส่วนของการติดตั้ง linux ถูกแทนที่ในช่วงหลายปีที่ผ่านมาการติดตั้งเดิมยังคงเหมือนเดิมหรือไม่? (เหมือนกับการเปรียบเทียบเดิมของเรือที่มีชิ้นส่วนทั้งหมดแทนที่อย่างช้าๆ) ฉันถามเพราะพาร์ทิชันรากของฉันมีการเปลี่ยนแปลงดิสก์และระบบไฟล์และพาร์ทิชันในบ้านของฉันเก่ากว่านั้น อุปกรณ์บางอย่างจะถูกจัดเตรียมเป็นรูปทองคำแล้วรับชื่อโฮสต์ที่กำหนดเองคีย์โฮสต์ ssh และ fs uuids ในการปรับใช้ ภาพทองคำสามารถแก้ไขและแช่แข็งอีกครั้งเช่นเชื้อสายลินุกซ์แบบครบวงจร
Tobu

คำตอบ:


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

สิ่งนี้จะบอกคุณเมื่อระบบไฟล์ถูกสร้างขึ้น

* = ในคอลัมน์แรกของdf /คุณสามารถค้นหาพาร์ติชันที่แน่นอนที่จะใช้


4
โดยปกติ/dev/sda1หรืออะไรทำนองนั้น (อะไรก็ตามที่df /แสดงในคอลัมน์แรก) แต่หลักการคือเสียง
Gilles

1
เฮ้มันมีประโยชน์ที่จะรู้ขอบคุณ และข้อมูลนี้ยังคงมีอยู่ในการคัดลอกระบบไฟล์เช่นกัน +1
Faheem Mitha

4
การแก้ปัญหาดี แต่ขึ้นอยู่กับระบบไฟล์และต้องการสิทธิ์รูท
golem

7
+1 อย่างไรก็ตามฉันต้องทราบว่าเดสก์ท็อปปัจจุบันของฉันสร้างขึ้นในปี 1994 ทุกอย่างเกี่ยวกับมันเปลี่ยนไปหลายครั้งตั้งแต่นั้นมา (รวมถึงดิสก์และประเภทของระบบไฟล์ที่ฉันใช้) แต่ก็ยังคงเป็นระบบเดียวกัน วิธีนี้จะบอกวันที่ของการย้ายครั้งล่าสุดไปยังระบบไฟล์ใหม่
cas

นี่ไม่ควรเป็นคำตอบที่ยอมรับได้เพราะมันใช้ได้กับ ext2 เท่านั้น (อาจมากถึง ext4?) ซึ่งฉันไม่ได้ใช้
soger

23

ตรวจสอบวันที่ของระบบไฟล์รูทด้วย dumpe2fs ฉันไม่สามารถคิดได้ว่าจะเป็นอย่างอื่นนอกจากวันที่คุณกำลังมองหา:

dumpe2fs $(mount | grep 'on \/ ' | awk '{print $1}') | grep 'Filesystem created:'

1
... หรือtune2fs -l
forcefsck

2
คุณลืมที่จะพูดถึงว่าสิ่งนี้ใช้ได้กับระบบไฟล์ ext2 / ext3 / ext4 เท่านั้น
Let_Me_Be

คุณจะได้รับวันที่ผิดในหลายเครื่องของฉันที่ฉันได้อัปเกรดฮาร์ดไดรฟ์และเพิ่งคัดลอกการติดตั้ง
Derobert

1
@derobert ฉันยังคิดว่าคำตอบของฉันจะถูกต้องเนื่องจากคำถาม OPs ดิสก์ใหม่ไม่แตกต่างจาก RAM ใหม่ - คุณยังคงมี 'การติดตั้ง' ที่เหมือนกันแม้ว่าคุณจะใส่ดิสก์ใหม่ใน ...
pboin

@ pboin ไม่เมื่อฉันคัดลอกการติดตั้งมันเป็นดิสก์ที่ใหญ่กว่าดังนั้นฉันจึงแบ่งพาร์ติชันและ mkfs (จากนั้นใช้ tar / cp เพื่อคัดลอกไม่ใช่ dd) อาจเป็นระบบไฟล์ที่แตกต่างกัน (เช่น ext2 -> ext3 -> ext4) ดังนั้นคุณจะได้เวลาที่ฉันคัดลอกการติดตั้ง นั่นเป็นวิธีที่อาจเป็นไปได้มากกว่าวันที่ OP กำลังมองหา
derobert

16

มีไม่กี่วันที่โกหกรอบ ๆ

  • ไฟล์ทั้งหมดมีวันที่
  • ไฟล์บันทึกมีวันที่ในนั้น

บน Debian หรือ Ubuntu และอนุพันธ์ของพวกเขาดู/var/log/installer/syslogคำตอบที่ชัดเจนถ้ามันมีอยู่มันเป็นส่วนหนึ่งของบันทึกการปลูกฝัง

แต่ระวังไม่รับประกัน (ดูคำตอบ / ความคิดเห็นอื่น ๆ ด้วยเหตุผลบางประการที่อาจไม่ทำงาน)


สิ่งนี้อาจเฉพาะเจาะจงกับ Debian / Ubuntu
Faheem Mitha

@Faheem Mitha: ไฟล์ / ไดเรกทอรีเดียวกันนั้นใช้สำหรับ Ubuntu
BillThor

1
@ บิล: ใช่ฉันพูดเฉพาะ Debian / Ubuntu ความหมายของสูตรจะใช้ได้กับทั้ง Debian และ Ubuntu แต่อาจไม่ใช่สำหรับการแจกแจงแบบลินุกซ์ (ที่ไม่ใช่แบบเดเบียน) อื่น ๆ
Faheem Mitha

แต่ไม่ใช่ว่าทุกไฟล์จะมีวันที่สร้าง วันเกิดของ AFAIK ได้รับการแนะนำใน ext4 เท่านั้นและนั่นไม่ใช่ POSIX
Konrad Gajewski

@KonradGajewski แต่ข้างใต้คำตอบนี้หรือความคิดเห็นใด ๆ ที่กล่าวถึงวันที่สร้างไฟล์
ctrl-alt-delor

12

สำหรับ Red Hat based distributions (เช่น 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

1
ทำไมถึงrpm -qiให้ฉันInstall Date: Mon 07 Jul 2014 03:20:44 PM UTCในขณะที่tune2fsพูดว่าFilesystem created: Sat Dec 20 23:41:41 2014?
Benjamin

บน VM ของ Azure ของฉันทั้งหมดมีเวลาเดียวกันดังนั้นรอบต่อนาทีจึงไม่น่าเชื่อถือเลย
Chris

10

ทางออกที่เป็นกลางที่สุดสำหรับระบบไฟล์และการแจกจ่าย (ที่ฉันสามารถหาได้) คือการใช้ไฟล์ที่เก่าที่สุดที่กำหนดโดยls -lact /etcซึ่งจะดูที่ข้อมูลเมตาของแต่ละไฟล์สำหรับเวลาการสร้าง ขณะนี้สามารถ gamed มันจะไม่ได้รับผลกระทบจากtouchหรือไฟล์ที่สร้างขึ้นโดยการแยกเก็บถาวร (เช่นtar -pเพื่อรักษา timestamps)

ฉันคิดว่าเป็นการดีที่สุดที่จะดูไฟล์มากกว่าไดเรกทอรีเนื่องจากไดเรกทอรีจะเปลี่ยนเมทาดาทาเวลาการสร้างเมื่อเนื้อหาของพวกเขาเปลี่ยนไป (บางทีบางคนสามารถทำให้เข้าใจได้ว่าทำไมถึงเป็นเช่นนั้น)

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

ระบบที่ขาดGNU Coreutilsควรลบ--full-timeตัวเลือก (ลำดับการเรียงจะยังคงถูกต้องและคุณจะยังคงได้รับวัน) คุณสามารถรับเวลาการสร้างจากข้อมูลเมตาของไฟล์ด้วยstat FILE |grep Change(เรียกใช้ในไฟล์ที่เก่าที่สุดที่ระบุโดยls -lact)

บนระบบอื่นที่ไม่ใช่ลีนุกซ์statอาจมีข้อมูลนั้นในการจัดเรียงที่แตกต่างกันเล็กน้อยอาจต้องการแฟล็กที่แตกต่างกัน โปรดทราบว่านี่ยังคงใช้ข้อมูลเมตาของไฟล์และไม่รับประกันความถูกต้อง

โปรดทราบว่าstatจาก GNU Coreutils มีเวลา "วันเกิด" ซึ่งมีแนวโน้มที่จะผิด (Linux ที่มีอัตราผลตอบแทนext40เพื่อระบุว่าไม่ทราบ FreeBSD กับUFSแสดงเวลา "เกิด" ที่เก่ากว่าระบบที่ฉันสอบถาม) ค่าที่ถูกต้องถูกระบุว่าเป็นเวลา "เปลี่ยน"

หากคุณต้องการจินตนาการและใช้เวลาในการสร้างไฟล์ที่เก่าที่สุดใน/etc:

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

คำสั่งนี้ใช้ได้กับฉันในระบบ FreeBSD เก่า (UFS ไม่มี GNU utils):

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)


6

ใน Fedora ผู้ติดตั้งแอนาคอนดาจะจัดเก็บรายละเอียดการกำหนดค่าการติดตั้งของคุณไว้ในโฟลเดอร์โฮมของรูท

บน Debian (อย่างน้อยที่สุดเมื่อเร็ว ๆ นี้) จะมีการจัดเก็บบันทึกจากการติดตั้งหลาย/var/log/installer/รายการ /var/log/installer.*รุ่นเก่าเก็บไว้ใน อย่างน้อยก็ย้อนกลับไปปี 2003


4

ตามที่ร้องขอโดย OP

หากคุณกำลังมองหาเวลาเมื่อระบบถูกตั้งค่าไม่มีวิธีการตรวจสอบว่า สำหรับหนึ่งระบบอาจถูกโคลน (ไม่ได้ติดตั้ง) ซึ่งจะปลอมเวลาในการสร้างไฟล์ได้อย่างมีประสิทธิภาพ

คุณสามารถประมาณอายุด้วยการค้นหาไฟล์ที่เก่าที่สุด


mattdm ถูกต้อง; คุณสามารถรับเวลาเข้าถึงเวลาแก้ไขและเวลาเปลี่ยน ctime เป็นสิ่งสุดท้าย ดูโพสต์ SO นี้
Michael Mrozek


2

ฉันดูไฟล์ที่เก่าแก่ที่สุดใน / boot (ด้านบนของ "ls -ltr / boot" มักจะมีบูตเซกเตอร์ดั้งเดิมจากการติดตั้งครั้งแรกที่นั่นระบบเก่าแก่ที่สุดของฉันนี้ให้วันที่ติดตั้งดั้งเดิม เครื่องและคัดลอกเนื้อหาของระบบไฟล์ประมาณสองสามครั้ง :)


2

ฉันกำลังมองหาเครื่องมือที่คล้ายกันและสิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือls -lAhF /etc/hostnameอายุของไฟล์ชื่อโฮสต์ ฉันคิดว่าโดยทั่วไปชื่อโฮสต์ของระบบจะถูกตั้งค่าไว้ที่จุดเริ่มต้นและจะไม่มีการเปลี่ยนแปลงในช่วงชีวิตของระบบ วันที่สร้างระบบไฟล์นั้นมีประโยชน์มาก แต่อาจทำให้เข้าใจผิดได้ ตัวอย่างเช่นฉันมักจะใช้อิมเมจเครื่องเสมือนซึ่งฉันได้ติดตั้งไว้ก่อนหน้านี้คัดลอกเปลี่ยนชื่อโฮสต์และสร้างเซิร์ฟเวอร์ใหม่จากมัน ดังนั้นในกรณีของฉัน/etc/hostnameบ่งชี้ที่ดีกว่าtune2fs -l /dev/sda1


1

หากคุณใช้ LVM ระหว่างการติดตั้งคุณสามารถตรวจสอบวันที่สร้าง Logical Volume ที่ทำในวันที่ติดตั้งตัวอย่าง:

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

0

ls -alct /root -> ไดเรกทอรีบ้านรูทถูกสร้างขึ้นในเวลาติดตั้ง


1
แต่มันอาจมีการเปลี่ยนแปลงในภายหลัง เวลาใน/การเปลี่ยนมีแนวโน้มน้อยกว่าเล็กน้อยหากเคอร์เนลไม่ได้ถูกเก็บไว้/แต่ก็ยังไม่ใช่ตัวบ่งชี้ที่ดีมาก (คำเตือน: -cไม่ใช่เวลาสร้างมันเป็นเวลาเปลี่ยนเมตาดาต้าระบบไฟล์ยูนิกซ์ส่วนใหญ่ไม่ได้จัดเก็บเวลาสร้างไฟล์)
Gilles

แสดงให้ฉันเวลาใด ๆ ที่ไม่สามารถเปลี่ยนแปลงได้ :)
เจ็ท

คำถามมีข้อสันนิษฐานว่า“ หากไม่มีใครพยายามซ่อนไว้” เวลาของ/rootการเปลี่ยนแปลงมีแนวโน้มที่จะเปลี่ยนแปลงตามธรรมชาติ (เช่นทุกครั้งที่มีคนสร้างไฟล์ที่นั่น)
Gilles

0

ตั้งแต่เวลาที่ผ่านมาฉันมักจะติดตั้งในช่วงเวลาที่ linux แจกจ่ายแพ็คเกจที่เรียกว่าTuptimeซึ่งเก็บสถิติที่เป็นประโยชน์เกี่ยวกับเวลาทำงาน startups, shutdowns ...

สำหรับคำถามของคุณบรรทัด "อายุการใช้งาน" มีข้อมูลนั้น ตัวอย่าง:

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/



-4

ฉันพบไฟล์ง่าย ๆ ชื่อ "1" อาจเป็นไฟล์แรก

▶ ls -lact --full-time /1
-rw-r--r--. 1 root root 0 2017-03-23 12:02:46.880994133 +0800 /1

ทำไม downvote เวลานี้ชี้ให้เห็นถึงเวลาที่ติดตั้งระบบล่าสุด
utopic eexpress

ฉันไม่มีไฟล์นี้ใน Linux
Kevin Lemaire
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.