วิธีการแสดงเวลาที่ผ่านไปนับตั้งแต่การบู๊ตระบบครั้งล่าสุดโดยใช้“ สถานะการออนไลน์”?


17

ฉันต้องการแสดงเวลาที่ผ่านไปนับตั้งแต่การบูตระบบครั้งล่าสุดโดยใช้uptimeแต่ฉันไม่ต้องการให้แสดงข้อมูลทั้งหมดนั้น ฉันแค่อยากรู้ว่ากี่ชั่วโมงที่ผ่านไปนับตั้งแต่การบูตระบบครั้งล่าสุด (เช่น: 18:17:59)

คำตอบ:


31

ในการทำให้เวลาผ่านไปตั้งแต่การบูตระบบครั้งสุดท้ายในhh:mm:ssรูปแบบคุณสามารถใช้:

awk '{print int($1/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime

/proc/uptime ไฟล์หลอกมีตัวเลขสองตัว:

  • หมายเลขแรกคือระยะเวลาที่ระบบใช้งานได้ในไม่กี่วินาที
  • ตัวเลขที่สองคือเวลาที่เครื่องใช้งานเป็นวินาที

ดังนั้นการใช้awkคุณสามารถใช้หมายเลขภาคเรียนและแปลงในhh:mm:ssรูปแบบ


15

ในการรับสถานะการออนไลน์ในไม่กี่วินาที:

awk '{print $1}' /proc/uptime

ในการรับเวลาทำงานในไม่กี่นาที:

 echo $(awk '{print $1}' /proc/uptime) / 60 | bc

ในการรับเวลาทำงานในหน่วยชั่วโมง:

 echo $(awk '{print $1}' /proc/uptime) / 3600 | bc

ในการรับความแม่นยำของตัวเลข x คุณสามารถเพิ่ม scale = x เช่นสำหรับ x = 2

echo "scale=2; $(awk '{print $1}' /proc/uptime) / 3600" | bc

2

ลองอันนี้:

uptime | awk '{ print $3 }'

uptimeในความเป็นจริงจะพิมพ์คำที่สามของสายการผลิตโดย


3
มันได้ผล. แต่ดูเหมือนจะไม่ถูกวิธีที่จะทำ จะเกิดอะไรขึ้นถ้าคำที่สามไม่ใช่เวลาตัวอย่างเช่นคำที่สามของฉันคือ "4" เพราะเครื่องของฉันทำงานเป็นเวลา 4 วัน นี่คือสิ่งที่ฉันได้รับ: "02:00:39 เพิ่มขึ้น 4 วัน, 12:54, ผู้ใช้ 2 คน, โหลดเฉลี่ย: 0.03. 0.06, 0.06"
Adrian George

โอ้: DI ไม่รู้เวลามากกว่า 1 วัน!
Alen

ไม่เป็นไรตอนนี้คุณมีคำตอบสำหรับเรื่องนี้แล้วหรือยัง?
Adrian George

ไม่ล่ะขอบคุณ. uptimeดูเหมือนจะไม่มีตัวเลือก แต่ฉันไม่สามารถหาอะไรในเน็ตได้
Alen

2

การดัดแปลงเล็กน้อยเพื่อแสดงวัน:

awk '{print int($1/86400)"days "int($1%86400/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime

0

สิ่งนี้จะจัดรูปแบบผลลัพธ์ของคุณเป็น 2 ศูนย์ภายใน:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.