Làm cách nào để tìm hệ thống Linux được cài đặt cách đây bao lâu?


97

Làm thế nào tôi có thể tìm thấy thời gian kể từ khi một hệ thống Linux được cài đặt lần đầu tiên, miễn là không ai cố gắng che giấu nó?


Bạn có ý nghĩa gì bởi tuổi tác?
Let_Me_Be

@Let: Thời gian kể từ khi nó được thiết lập.

1
@Let: Tôi đã mong đợi một câu trả lời dọc theo dòng "kiểm tra dấu thời gian của / some / oscure / file, nó không bao giờ được sửa đổi". Hãy làm cho nó một câu trả lời.

2
Chẳng phải điều đó hơi giống với việc hỏi tuổi của [Theseus 'ship] (en.wikipedia.org/wiki/Ship_of_Theseus) sao?
Tobu

2
Khi mọi phần của bản cài đặt linux đã được thay thế qua nhiều năm, liệu nó có còn là bản cài đặt không? (Giống như sự tương tự ban đầu của một con tàu có tất cả các bộ phận của nó thay thế từ từ) Tôi hỏi bởi vì phân vùng gốc của tôi đã thay đổi đĩa và hệ thống tập tin, và phân vùng nhà của tôi cũ hơn thế. Một số thiết bị được chuẩn bị một lần dưới dạng hình ảnh vàng, sau đó nhận tên máy chủ tùy chỉnh, khóa máy chủ ssh và usids fs khi triển khai. Hình ảnh vàng có thể được sửa đổi và đóng băng một lần nữa, như dòng linux chìa khóa trao tay.
Tobu

Câu trả lời:


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

Điều này sẽ cho bạn biết khi hệ thống tập tin được tạo ra.

* = Trong cột đầu tiên của df /bạn có thể tìm thấy phân vùng chính xác để sử dụng.


4
Thông thường /dev/sda1hoặc một cái gì đó tương tự (bất cứ điều gì df /hiển thị trong cột đầu tiên), nhưng nguyên tắc là âm thanh.
Gilles

1
Hey, đó là tiện dụng để biết, cảm ơn. Và thông tin này còn tồn tại sao chép hệ thống tập tin. +1.
Faheem Mitha

4
Giải pháp là tốt, nhưng hệ thống tập tin phụ thuộc và yêu cầu quyền root.
golem

7
+1. Tuy nhiên, tôi phải lưu ý rằng máy tính để bàn hiện tại của tôi đã được tạo ra vào khoảng năm 1994. Hoàn toàn mọi thứ về nó đã thay đổi nhiều lần kể từ đó (bao gồm cả các đĩa và loại hệ thống tệp tôi sử dụng) nhưng nó vẫn là cùng một hệ thống. Phương pháp này sẽ chỉ, tốt nhất, cho tôi biết ngày chuyển gần đây nhất sang một hệ thống tập tin mới.
cas

Đây không phải là câu trả lời được chấp nhận vì nó chỉ hoạt động với ext2 (có thể lên đến ext4?) Mà tôi không sử dụng.
soger

23

Kiểm tra ngày của hệ thống tập tin gốc với dumpe2fs. Tôi thực sự không thể nghĩ làm thế nào đó có thể là bất cứ điều gì khác ngoài ngày bạn đang tìm kiếm:

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

1
... hoặctune2fs -l
Forcefsck

2
Bạn đã quên đề cập rằng điều này chỉ áp dụng cho hệ thống tập tin ext2 / ext3 / ext4.
Let_Me_Be

Bạn đã nhận được ngày sai trên một số máy của tôi, nơi tôi đã nâng cấp ổ cứng và chỉ sao chép cài đặt.
derobert

1
@derobert, tôi vẫn nghĩ câu trả lời của mình sẽ đúng, đưa ra câu hỏi OP. Một đĩa mới không khác gì RAM mới - bạn vẫn có cùng 'cài đặt' mặc dù bạn đã bật một đĩa mới trong ...
pboin

@pboin Không, khi tôi sao chép cài đặt, đĩa của nó lớn hơn, vì vậy tôi phân vùng lại và mkfs (sau đó sử dụng tar / cp để sao chép nó, không phải dd). Thậm chí có thể là một hệ thống tệp khác (ví dụ: ext2 -> ext3 -> ext4) Vì vậy, bạn sẽ nhận được thời gian tôi sao chép cài đặt. Đó là cách nó có thể khác với ngày OP đang tìm kiếm.
derobert

16

Có một vài ngày nằm xung quanh.

  • Tất cả các tập tin có ngày.
  • Các tệp nhật ký có ngày trong đó.

Trên Debian hoặc Ubuntu và các dẫn xuất của chúng, hãy xem /var/log/installer/syslogcâu trả lời dứt khoát nếu nó tồn tại, nó là một phần của nhật ký của sự thấm nhuần.

Nhưng hãy cẩn thận điều này không được đảm bảo. (xem câu trả lời / nhận xét khác cho một số lý do có thể không hoạt động.)


Điều này có thể dành riêng cho Debian / Ubuntu.
Faheem Mitha

@Faheem Mitha: Cùng một tệp / thư mục được sử dụng cho Ubuntu.
BillThor

1
@Bill: Có, tôi đã nói cụ thể về Debian / Ubuntu. Có nghĩa là công thức này sẽ hoạt động cho cả Debian và Ubuntu, nhưng có thể không phải cho các bản phân phối Linux khác (không dựa trên Debian).
Faheem Mitha

Nhưng không phải tất cả các tập tin CÓ NGÀY TẠO. Ngày sinh của AFAIK chỉ được giới thiệu trong ext4 và dù sao đó cũng không phải là POSIX.
Konrad Gajewski

@KonradGajewski Nhưng cuối cùng câu trả lời này, hoặc bất kỳ ý kiến ​​nào của nó đề cập đến ngày tạo tập tin.
ctrl-alt-delor

12

Trên các bản phân phối dựa trên Red Hat (ví dụ: CentOS, Khoa học, Oracle, v.v.), bạn có thể sử dụng:

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.

hoặc là

rpm -q basesystem --qf '%{installtime:date}\n'
Mon 02 May 2016 19:20:58 BST

1
Làm thế nào đến rpm -qicho tôi Install Date: Mon 07 Jul 2014 03:20:44 PM UTC, trong khi tune2fsnói Filesystem created: Sat Dec 20 23:41:41 2014?
Benjamin

Trên máy ảo Azure của tôi đều có cùng thời gian, do đó, vòng quay không đáng tin cậy chút nào
Chris

10

Giải pháp trung lập nhất cho hệ thống tệp và phân phối (mà tôi có thể đưa ra) là sử dụng tệp cũ nhất được cung cấp bởi ls -lact /etc, xem xét siêu dữ liệu của mỗi tệp trong thời gian tạo. Mặc dù điều này có thể được chơi, nhưng nó không bị ảnh hưởng bởi touchhoặc các tệp được tạo bằng cách trích xuất tài liệu lưu trữ (ví dụ: tar -pđể giữ dấu thời gian).

Tôi nghĩ rằng cách tốt nhất là nhìn vào file chứ không phải là thư mục từ thư mục làm thay đổi siêu dữ liệu thời gian sáng tạo của họ khi nội dung của họ thay đổi (có lẽ ai đó có thể làm sáng tỏ về lý do tại sao lại như vậy?)

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

Các hệ thống thiếu GNU Coreutils sẽ xóa --full-timetùy chọn (thứ tự sắp xếp vẫn sẽ chính xác và bạn vẫn sẽ nhận được ngày). Bạn có thể lấy thời gian tạo từ siêu dữ liệu của tệp với stat FILE |grep Change(chạy trên tệp cũ nhất được liệt kê bởi ls -lact).

Trên các hệ thống không phải Linux khác, statcó thể có thông tin đó theo cách sắp xếp hơi khác, có thể yêu cầu các cờ khác nhau. Lưu ý rằng điều này vẫn sử dụng siêu dữ liệu của tệp và độ chính xác không được đảm bảo.

Cũng lưu ý rằng stattừ GNU Coreutils có thời gian "Sinh" có xu hướng sai (Linux với sản lượng ext40 cho biết nó chưa được biết, FreeBSD với UFS cho thấy thời gian "Sinh" cũ hơn hệ thống tôi đã truy vấn). Giá trị đúng được liệt kê là thời gian "Thay đổi".

Nếu bạn muốn nhận được ưa thích và chỉ nhận thời gian tạo tệp cũ nhất trong /etc:

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

Lệnh này hoạt động với tôi trên một hệ thống FreeBSD cũ (UFS, không sử dụng GNU):

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

(Vâng, phân tích cú pháp này lsvà đó là điều cấm kỵ, nhưng không nên có các tệp được đặt tên tinh nghịch trong /etc.)

Bạn cũng có thể sử dụng statđể có được các định dạng thời gian khác. Ví dụ: để có được thời gian tạo trong Unix epoch : stat -c %Z FILE(với GNU, lưu ý rằng đó %Zlà "thời gian thay đổi trạng thái cuối cùng" nhưng đó là cờ chính xác cho các hệ thống Linux và BSD của tôi, như đã lưu ý ở trên, %Wlà "thời gian sinh tệp" ) hoặc stat -f %c FILE(với BSD).


6

Trong Fedora, trình cài đặt anaconda lưu trữ các chi tiết cấu hình của cài đặt của bạn trong thư mục gốc của root, có thể cung cấp cho bạn một số ý tưởng.

Trên Debian (ít nhất là những cái gần đây hơn), một số nhật ký từ bản cài đặt được lưu trữ trong /var/log/installer/. Các phiên bản cũ hơn lưu trữ chúng trong /var/log/installer.*. Điều đó ít nhất là trở lại năm 2003.


4

Theo yêu cầu của OP.

Nếu bạn đang tìm kiếm thời gian, khi hệ thống được thiết lập, không có cách nào để xác định điều đó. Đối với một, hệ thống có thể đã được nhân bản (không được cài đặt) sẽ giả mạo thời gian tạo tập tin một cách hiệu quả.

Bạn có thể ước tính tuổi bằng cách tìm kiếm các tập tin cũ nhất.


mattdm là đúng; bạn có thể nhận được thời gian truy cập, thời gian sửa đổi và thời gian thay đổi; ctime là lần cuối cùng Xem bài đăng SO này
Michael Mrozek


2

Tôi xem tập tin cũ nhất trong / boot (đầu "ls -ltr / boot". Thường có một khu vực khởi động ban đầu từ lần cài đặt đầu tiên ở đó. Trên hệ thống cũ nhất của tôi, ngày này cài đặt ban đầu, mặc dù đã thay thế mọi thứ trong Máy và sao chép nội dung của hệ thống tệp một vài lần :)


2

Tôi đã tìm kiếm công cụ tương tự, và thứ tốt nhất tôi có thể nghĩ ra ls -lAhF /etc/hostname, chỉ đơn giản là tuổi của tệp tên máy chủ. Tôi nghĩ, thông thường, tên máy chủ của một hệ thống được đặt ở đầu và không thay đổi trong suốt vòng đời của hệ thống. Ngày tạo ra hệ thống tập tin là hữu ích, nhưng có thể gây hiểu nhầm. Tôi, ví dụ, thường sử dụng hình ảnh máy ảo mà tôi đã cài đặt cách đây một thời gian, sao chép nó, thay đổi tên máy chủ và tạo một máy chủ mới từ nó. Do đó, trong trường hợp của tôi /etc/hostnamelà dấu hiệu tốt hơntune2fs -l /dev/sda1


1

Nếu bạn đã sử dụng LVM trong quá trình cài đặt, bạn có thể kiểm tra ngày tạo Khối lượng hợp lý được thực hiện vào ngày cài đặt, ví dụ:

$ 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 -> thư mục gốc được tạo khi cài đặt


1
Nhưng nó có thể đã thay đổi sau đó. Thời gian bật /ít có khả năng thay đổi nếu hạt nhân không được giữ /, nhưng nó vẫn không phải là một chỉ số rất tốt. (Nhắc nhở: -ckhông phải là thời gian tạo, đó là thời gian thay đổi siêu dữ liệu. Hầu hết các hệ thống tệp unix không lưu trữ thời gian tạo tệp.)
Gilles

cho tôi xem bất cứ lúc nào không thể thay đổi :)
máy bay phản lực

Câu hỏi đã đặt ra giả định, với điều kiện là không ai cố gắng che giấu nó. Thời gian /rootcó khả năng thay đổi tự nhiên (ví dụ: mỗi khi ai đó tạo tệp ở đó).
Gilles

0

Từ một thời gian trước, tôi thường cài đặt vào thời điểm sime rằng linux phân phối một gói có tên là Tuptime , giữ các số liệu thống kê hữu ích về thời gian chạy, khởi động, tắt máy ...

Đối với câu hỏi của bạn, dòng "Cuộc sống hệ thống" có thông tin đó. Ví dụ như:

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

Thông tin thêm: https://github.com/rfrail3/tuptime/


0

Đây là một cách khác

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

-4

Tôi tìm thấy một tập tin đơn giản. tên "1". Có lẽ là tập tin đầu tiên.

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

Tại sao downvote. Lần này là thực sự chỉ ra thời gian cài đặt hệ thống cuối cùng.
eexpress không tưởng

Tôi không có tệp này trên Linux của mình.
Kevin Lemaire
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.