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ó?
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ó?
Câu trả lời:
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.
/dev/sda1
hoặ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.
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:'
tune2fs -l
Có một vài ngày nằm xung quanh.
Trên Debian hoặc Ubuntu và các dẫn xuất của chúng, hãy xem /var/log/installer/syslog
câ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.)
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
rpm -qi
cho tôi Install Date: Mon 07 Jul 2014 03:20:44 PM UTC
, trong khi tune2fs
nói Filesystem created: Sat Dec 20 23:41:41 2014
?
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 touch
hoặ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-time
tù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, stat
có 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 stat
từ 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 ls
và đó 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 đó %Z
là "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, %W
là "thời gian sinh tệp" ) hoặc stat -f %c FILE
(với BSD).
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.
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.
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/hostname
là dấu hiệu tốt hơntune2fs -l /dev/sda1
ls -alct /root
-> thư mục gốc được tạo khi cài đặ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ở: -c
khô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.)
/root
có khả năng thay đổi tự nhiên (ví dụ: mỗi khi ai đó tạo tệp ở đó).
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/
Đâ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
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