วิธีอ่านคอลัมน์“ IDLE” ในผลลัพธ์ของคำสั่ง 'w' ของ Linux


11

ฉันกำลังพยายามหากระบวนการที่ตรวจสอบเซสชันผู้ใช้บนเซิร์ฟเวอร์ระยะไกลและเตือนพวกเขาเมื่อพวกเขาไม่ได้ใช้งานนานเกินไปซึ่งด้วยคำสั่ง Linux wนั้นเหมาะสมอย่างเหมาะสม

ปัญหาคือ - wใช้ 3 รูปแบบที่แตกต่างกันเพื่อระบุเวลาว่างของเซสชันและฉันไม่สามารถหารูปแบบได้อย่างถูกต้อง ผลลัพธ์ของwอาจมีลักษณะเช่นนี้:

 11:40:57 up 400 days, 10:46, 13 users,  load average: 5.07, 5.10, 4.83
USER     TTY      FROM           LOGIN@   IDLE   JCPU   PCPU WHAT
john     pts/1    XX.XX.XX.XX   Wed13   22:29m  0.13s  0.04s ssh master-db
june     pts/2    XX.XX.XX.XX   Wed13   46.00s  0.67s  0.13s -bash
jenn     pts/4    XX.XX.XX.XX   11:13   27:47   4.16s  0.11s -bash

อย่างที่คุณเห็น IDLE มีรูปแบบที่แตกต่างกันสำหรับผู้ใช้แต่ละคน:

  • เห็นได้ชัดว่า "AA.BBs" หมายความว่า AA วินาทีและ BB 1 / 100th ของวินาที (46 วินาทีในกรณีของเดือนมิถุนายน) ได้ผ่านไปแล้วนับตั้งแต่เธอเปิดใช้งานล่าสุดบนคอนโซล
  • "AA: BBm" อาจหมายความว่าชั่วโมง AA และ BB นาทีผ่านไปตั้งแต่ John ใช้งานล่าสุดในเซสชันของเขา
  • "AA: BB" เป็นรูปแบบที่ฉันนึกไม่ออก - เจนนิเฟอร์ไม่ได้อยู่ในเซสชันนานเท่าไหร่แล้ว?

คำตอบ:


4

หากไม่มีตัวระบุหมายความว่า MM: SS - นั่นคือนาทีและวินาทีทั้งหมด ในฐานะโบนัสที่เพิ่มเข้ามามีรูปแบบที่สี่ที่คุณไม่มีในเอาต์พุตนั้น - จำนวนวัน (NNdays) ที่ไม่มีกิจกรรม


10

จากหน้าคน

รูปแบบมาตรฐานคือ DDdays, HH: MMm, MM: SS หรือ SS.CC หากเวลามากกว่า 2 วัน 1 ชั่วโมงหรือ 1 นาทีตามลำดับ

ดังนั้นเอาต์พุตของคุณคือ MM: SS (> 1m และ <1 ชั่วโมง)


1

ไม่ใช่คำตอบสำหรับคำถามของคุณ แต่วิธีที่ง่ายกว่าในการตรวจสอบเวลาว่างของเซสชันการเข้าสู่ระบบคือดู / dev / pts เวลาแก้ไขของไฟล์ในนั้นสะท้อนถึงครั้งสุดท้ายที่เซสชั่นการเข้าสู่ระบบได้รับการป้อนข้อมูล

คุณควรจะสามารถดำเนินการทางสถิติที่นั่น (เช่น stat --format = "% n% X" *) และเก็บทุกอย่างไว้ในไม่กี่วินาที ควรทำให้การคำนวณเวลาใด ๆ ง่ายขึ้น


1
หากคุณพบว่ารูปแบบการแยกวิเคราะห์เวลาคุณอาจต้องการค้นหาแหล่งที่มาของการประทับเวลานั้นในเวลายุค
cjc

1
ฉันอ่านบางอย่างเกี่ยวกับเรื่องนั้น แต่ฉันสังเกตเห็นว่าเวลาที่ไม่ได้ใช้งานซึ่งรายงานwแตกต่างจากเวลาที่บันทึกใน/dev/ptsไฟล์ คิดอะไรทำไม?
Guss

บริบทแตกต่างกันอย่างไร ฉันไม่ได้ดูอย่างละเอียด แต่ "w" ต้องดึงข้อมูลจากบางแห่งและ / dev / pts เป็นสถานที่ที่ชัดเจน อ๊ะบางทีถ้ามีอะไรเกิดขึ้นบนหน้าจอ (/ dev / pts / * ควรเป็นการสื่อสารแบบสองทาง); ในกรณีดังกล่าวผู้ใช้จะไม่ได้ทำงาน แต่เนื่องจากบางสิ่งที่เกิดขึ้นในอุปกรณ์ตัวอย่างเช่น / dev / pts / 0 จะถูกอัปเดต
cjc

นั่นเป็นคำอธิบายที่เป็นไปได้และมันจะเอาชนะแผนการของฉัน - เพราะฉันต้องการปิดเซสชันที่ไม่ได้ใช้งานแม้ว่าผู้ใช้จะปรับแต่งไฟล์บันทึกหรือใช้งานwatchอยู่
Guss

1

คำตอบคือ 27 นาทีและ 47 วินาที

  1. รูปแบบเริ่มต้นคือ MM: SS
  2. 22: 29m หมายถึง 22 ชั่วโมงและ 29 นาที
  3. 46.00s หมายถึง 46 วินาที
  4. 4d หมายถึง 4 วัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.