Bagaimana cara andal mendapatkan cap waktu di mana sistem boot?

12

Saya mengetahui uptimeperintah tersebut, tetapi mengembalikan beberapa detik sejak di-boot, jadi jika saya hanya mengurangi angka dari cap waktu saat ini, secara teori saya bisa mendapatkan hasil yang berbeda jika perubahan kedua setelah saya membaca waktu kerja dan cap waktu saat ini. uptime -sadalah apa yang saya inginkan, tetapi tidak tersedia pada centos (bagaimana cara dihitung btw?). Bisakah saya mendapatkan ctime of / proc dir? Ini sepertinya memberi saya angka yang tepat, tapi saya ingin tahu apakah setiap sistem linux memiliki / proc dibuat saat boot.

Halus
sumber
Format apa yang Anda inginkan? HH:MM:SS? Sesuatu yang lain
terdon
1
@terdon, cap waktu UNIX
Fluffy

Jawaban:

12

Pertama-tama, crtimeadalah rumit di Linux . Yang mengatakan, menjalankan sesuatu seperti

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

atau

$ stat -c %Z /proc/ 
1414674003

mungkin persis apa yang Anda butuhkan. Sistem /procfile didefinisikan oleh standar LFS dan harus ada untuk sistem Linux dan juga untuk sebagian besar (semua?) UNIXen.

Atau, dengan asumsi Anda tidak benar-benar membutuhkan ketepatan detik, tetapi hanya perlu cap waktu yang benar, Anda dapat menggunakan who:

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

Dari man who: -b, --boot saat boot sistem terakhir

Anda dapat mengubahnya menjadi detik sejak zaman menggunakan GNU date:

$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000
terdon
sumber
1
Peringatan kecil adalah bahwa waktu boot ditentukan dari RTC, atau beberapa default jika kurang dari RTC. Waktu ini ditulis untuk utmp(oleh init) sebagai entri "boot sistem", dan dibaca oleh who -b. Waktu sistem mungkin salah sampai memasuki startup. who -bpada rPi saya mengatakan itu boot pada tahun 1970, dan ARM tanpa RTC lain mengatakan 2008 ;-)
mr.spuratic