จะรับไทม์สแตมป์ที่ระบบบูทได้อย่างเชื่อถือได้อย่างไร


13

ฉันรู้ถึงuptimeคำสั่ง แต่มันส่งคืนวินาทีนับตั้งแต่บูทดังนั้นถ้าฉันแค่ลบทอนจำนวนนั้นจากการประทับเวลาปัจจุบันตามทฤษฎีแล้วฉันจะได้ผลลัพธ์ที่ต่างออกไปถ้าการเปลี่ยนแปลงครั้งที่สองหลังจากฉันอ่าน uptime และ timestamp ปัจจุบัน uptime -sเป็นสิ่งที่ฉันต้องการ แต่มันไม่สามารถใช้ได้กับ centos (มันคำนวณ btw อย่างไร) ฉันสามารถรับเวลา / proc dir ได้หรือไม่ ดูเหมือนว่าจะให้ฉันในจำนวนที่เหมาะสม แต่ฉันสงสัยว่าทุกระบบ linux มี / proc สร้างขึ้นในการบูต


คุณต้องการรูปแบบใด HH:MM:SS? อื่น ๆ อีก?
terdon

1
@terdon, UNIX Timestamp
Fluffy

คำตอบ:


12

ครั้งแรกของทั้งหมดcrtimeคือหากินบน Linux ที่กล่าวว่าการทำงานบางอย่างเช่น

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

หรือ

$ stat -c %Z /proc/ 
1414674003

อาจเป็นสิ่งที่คุณต้องการ /procระบบไฟล์จะถูกกำหนดโดย LFS มาตรฐานและควรจะมีระบบลินุกซ์ใด ๆ เช่นเดียวกับส่วนใหญ่ (ทั้งหมด?) UNIXen

หรือสมมติว่าคุณไม่ต้องการความแม่นยำเป็นวินาที แต่ต้องการเพียงการประทับเวลาที่ถูกต้องคุณสามารถใช้who:

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

จากman who: -b, --boot time ของการบูตระบบครั้งล่าสุด

คุณสามารถแปลงเป็นวินาทีตั้งแต่ยุคโดยใช้ GNU date:

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

1
ข้อแม้เล็กน้อยคือเวลาการบู๊ตถูกกำหนดจาก RTC หรือบางค่าเริ่มต้นหากไม่มี RTC คราวนี้ถูกเขียนไปutmp(โดย init) ว่า "การบูตระบบ" who -bรายการและอ่านโดย เวลาของระบบอาจไม่ถูกต้องจนกว่าจะถึงการเริ่มต้น who -bใน rPi ของฉันบอกว่ามันบูทในปี 1970 และ ARM RTC-less อีกตัวบอกว่า 2008 ;-)
mr.spuratic

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.