Làm thế nào để có được dấu thời gian đáng tin cậy mà hệ thống khởi động?


12

Tôi biết uptimelệnh, nhưng nó trả về giây kể từ khi khởi động, vì vậy nếu tôi chỉ trừ số đó khỏi dấu thời gian hiện tại, theo lý thuyết tôi có thể nhận được kết quả khác nếu lần thứ hai thay đổi sau khi tôi đọc thời gian hoạt động và dấu thời gian hiện tại. uptime -slà những gì tôi muốn, nhưng nó không có sẵn trên centos (cách tính btw?). Tôi chỉ có thể nhận được ctime của / Proc dir? Điều này dường như cung cấp cho tôi số thích hợp, nhưng tôi tự hỏi nếu mọi hệ thống linux có / Proc được tạo khi khởi động.


Bạn muốn định dạng nào? HH:MM:SS? Thứ gì khác?
terdon

1
@terdon, dấu thời gian UNIX
Fluffy

Câu trả lời:


12

Trước hết, crtimekhó khăn trên Linux . Điều đó nói rằng, chạy một cái gì đó như

$ stat -c %z /proc/ 
2014-10-30 14:00:03.012000000 +0100

hoặc là

$ stat -c %Z /proc/ 
1414674003

có lẽ chính xác là những gì bạn cần. Các /prochệ thống tập tin được xác định bởi LFS tiêu chuẩn và nên có đối với bất kỳ hệ thống Linux cũng như đối với hầu hết (tất cả?) UNIXen.

Ngoài ra, giả sử bạn không thực sự cần giây chính xác, nhưng chỉ cần dấu thời gian là chính xác, bạn có thể sử dụng who:

$ who -b
   system boot  2014-10-30 14:00

Từ man who: -b, --boot thời gian khởi động hệ thống cuối cùng

Bạn có thể chuyển đổi nó thành giây kể từ kỷ nguyên bằng GNU date:

$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000

1
Một cảnh báo nhỏ là thời gian khởi động được xác định từ RTC hoặc một số mặc định nếu thiếu RTC. Thời gian này được ghi vào utmp(bởi init) dưới dạng mục "khởi động hệ thống" và được đọc bởi who -b. Thời gian hệ thống có thể sai cho đến khi khởi động. who -btrên rPi của tôi nói rằng nó đã khởi động vào năm 1970 và một ARM không có RTC khác nói 2008 ;-)
mr.spuratic
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.