วิธีการตรวจสอบ "อายุ" ของระบบลินุกซ์ตั้งแต่การติดตั้ง?


39

ฉันคิดว่าฉันสามารถตรวจสอบการประทับเวลาของไฟล์เฉพาะได้อย่างง่ายดาย แล้วฉันตระหนักว่ามันจะไม่ง่ายดังนั้นเมื่อผมเห็น timestamps 1991เช่น


ฉันรักคำตอบทั้งหมดเหล่านี้และยกระดับบางส่วนและเรียนรู้จากพวกเขา แต่มันเกิดขึ้นกับฉันว่าคำถามนั้นไม่ได้กำหนดไว้อย่างดีตัวอย่างเช่นกล่อง colo'ed ของฉันได้รับการผ่านสองสาขาของมาเธอร์บอร์ดและการเปลี่ยนแปลงที่สมบูรณ์สี่ประการของ HDD ในสิบปีที่ผ่านมา คืนค่าในแต่ละครั้ง กุญแจสาธารณะของฉันทั้งหมดลงวันที่ 19 กุมภาพันธ์ 2544 แต่รูท FS ถูกสร้างขึ้นเมื่อวันที่ 11 มิ.ย. 2010 เวลา 20:59:01 น. เมื่อ mobo ได้รับการอัพเกรดครั้งล่าสุด (พร้อมกับแผ่นดิสก์); การทดสอบอื่น ๆ ให้ผลลัพธ์ที่แตกต่างและเกิดขึ้นกับฉัน: คุณจะกำหนดอายุของระบบลินุกซ์อย่างไร
MadHatter รองรับโมนิก้า

4
เห็นได้ชัดว่าสิ่งนี้เป็นที่รู้จักกันว่าปัญหาเรือของเธเซอุส; เห็นen.wikipedia.org/wiki/Ship_of_Theseus
MadHatter สนับสนุนโมนิก้า

ฉันมักจะมี HDD พร้อมพาร์ติชันที่มีอยู่ตั้งแต่ฉันซื้อเครื่อง ... ฉันใส่ทุกสิ่งที่ฉันต้องการสำรองไว้ที่นั่นเมื่อฉันซื้อไดรฟ์ใหม่หรือสร้างพาร์ติชันรูทใหม่ที่มีเคอร์เนลใหม่ ... แต่มัน ไม่ได้เกิดขึ้นกับฉัน :-)
lisak

คำตอบ:


47

วิธีที่ง่ายที่สุดน่าจะเป็น (สมมติว่า sda1 คือ / root /):

tune2fs -l / dev / sda1 | grep สร้างแล้ว

สิ่งนี้จะแสดงวันที่ซึ่งระบบไฟล์ถูกสร้างขึ้น ยืนยันว่าจะทำงานกับ ext2 ถึง ext4 ไม่แน่ใจเกี่ยวกับระบบไฟล์อื่น ๆ !


1
เมื่อฉันได้รับไดรฟ์ใหม่สำหรับพีซีของฉันฉันมักจะสร้างพาร์ติชันบนพาร์ติชั่นแล้วตามcp -aด้วยข้อมูล ดังนั้นในระยะสั้น: เป็นไปไม่ได้ที่จะกำหนดอายุของระบบในทุกกรณี
Hubert Kario

บางทีการใช้อาจ/dev/rootจะกว้างกว่านิดหน่อย
camh

ฉันติดตั้งระบบใหม่เหนือระบบก่อนหน้ารักษา sda1 FS ไว้และทำให้วิธีแก้ปัญหาของ MihaiM ด้านล่าง (ปุ่ม ssh) นั้นแม่นยำยิ่งขึ้น
แหวนØ

14

กลไกหนึ่งที่ฉันมักใช้คือตรวจสอบเวลาเปลี่ยน (ctime) ในไฟล์ภายในไดเรกทอรีหลักของรูท เนื่องจาก/rootโฮมไดเร็กตอรี่ถูกสร้างขึ้นในเวลาติดตั้ง, และมักจะไม่ค่อยได้ใช้, สิ่งนี้สามารถให้การประมาณที่ค่อนข้างดี ตามที่ Kyle ได้อธิบายไว้ในคอมเม้นต์เนื่องจาก 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 ไม่ใช่เวลาสร้างไฟล์ แต่เป็นเวลาเปลี่ยน นี่เป็นครั้งสุดท้ายที่ฉันเปลี่ยนเป็นไอโหนด หากคุณเปลี่ยนการอนุญาตหรือเจ้าของไฟล์สิ่งนี้จะเปลี่ยนไป โอกาสที่จะเป็นเจ้าของหรือการอนุญาตของโฟลเดอร์ / root นั้นยังไม่เปลี่ยนแปลงซึ่งเป็นสาเหตุที่ทำให้เกิดปัญหา (ฉันไม่รู้ว่า c หมายถึงอะไร - สเปคยูนิกซ์เดี่ยวมีเพียง "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 และหากคุณทำการอัปเดตระบบ (และคุณควรทำการอัปเดตระบบ!) จากนั้นคีย์จะได้รับการสร้างใหม่
Josh

ความคิดที่ยอดเยี่ยม! อย่างไรก็ตามหากคีย์นั้นใหม่พอlsจะแสดงวันที่แตกต่างกัน (อย่างน้อยในเครื่องของฉัน) ดังนั้นcutคำสั่งจะไม่ทำงาน stat -c %y /etc/ssh/ssh_host*pubตอนนี้ผมจะใช้ นอกจากนี้ผมสงสัยว่าทำไมครั้งการสร้างแฟ้มยังไม่ได้รับความรักมากขึ้นบน Linux ...
Rennex

3

ตรวจสอบฮาร์ดแวร์จะเป็นเดิมพันที่ดีถ้าคุณมีการเข้าถึง คุณสามารถตรวจสอบระบบและ / หรือส่วนประกอบฮาร์ดแวร์เพื่อให้ได้แนวคิดที่ดีว่าควรประกอบเมื่อใด

อีกวิธีหนึ่งถ้าคุณสามารถเข้าถึงหน้าจอ BIOS มักจะมีข้อมูลวันที่ซึ่งสามารถใช้เพื่อกำหนดอายุของเครื่อง

หากคุณสามารถเข้าถึงข้อมูลสมาร์ทบนฮาร์ดไดรฟ์ ( smartctl -a /dev/sda) อาจมีบางสิ่งที่ต้องดำเนินการ ฉันไม่เห็นเวลาที่ระบุใน SMART แต่มีตัวนับการใช้งานอย่างน้อยหนึ่งชั่วโมง นั่นจะให้ขอบเขตที่ต่ำกว่าในเรื่องอายุของเครื่อง (เนื่องจากหากฮาร์ดไดรฟ์ทำงานเป็นเวลา 100 ชั่วโมงระบบจะไม่สามารถอายุน้อยกว่า 100 ชั่วโมง)

สำหรับการตรวจสอบระบบไฟล์คุณสามารถดูข้อมูลวันที่/lost+found- ไดเรกทอรีนั้นถูกสร้างขึ้นเมื่อระบบไฟล์ถูกสร้างขึ้น วันที่ที่ควรเห็นด้วยกับข้อมูล tunefs จากคำตอบก่อนหน้า


+1 สำหรับ/lost+foundคำใบ้เนื่องจากข้อมูลนี้มีให้สำหรับผู้ใช้ที่ไม่มีสิทธิ์ การรันการดำเนินการแบบแบตช์เช่น tune2fs บนระบบไฟล์รูทเนื่องจาก superuser เป็นเรื่องน่ากังวลเล็กน้อย นอกจากนี้โซลูชันนี้ทำงานบนระบบไฟล์ FreeBSD และ non-ext2 / 3/4
Stefan Lasiewski

3

ด้วย RedHat และอนุพันธ์มันค่อนข้างง่ายที่จะเข้าใจแนวคิดทั่วไปของเวอร์ชั่น OS / เหล้าองุ่นผ่านการผสมผสานระหว่างอายุไฟล์และไฟล์ระบบอื่น ๆ ฉันมักจะตรวจสอบ/root/anaconda-ks.cfgไฟล์เนื่องจากมีการตั้งค่าเซิร์ฟเวอร์เริ่มต้นและพารามิเตอร์แพ็คเกจ บางครั้งuname -aจะมีข้อมูลที่ดีเกี่ยวกับวันที่สร้างเคอร์เนล นอกจากนี้ยังจะกลุ่มของไฟล์ที่มีวันเดียวกันใน/etc; โดยทั่วไปแล้วลิงก์ rcx.d, สคริปต์ rc, inittab ฯลฯ


3

สิ่งนี้ใช้ได้กับระบบ Red Hat:

rpm -qi basesystem | grep "Install Date"

โปรดทราบว่าสิ่งนี้ (และเคล็ดลับ tune2fs) ทำงานได้ดีกับเครื่องเสมือนจริงหากพวกเขากำลังหมุนจากภาพทั่วไป อย่างไรก็ตามการตรวจสอบคีย์โฮสต์ ssh นั้นถูกต้องใน Linode ของฉัน
cjc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.