ฉันจำเป็นต้องรู้ประวัติเข้าสู่ระบบสำหรับผู้ใช้ที่ระบุ (เช่นเวลาเข้าสู่ระบบและออกจากระบบ) ฉันจะแยกประวัตินี้สำหรับช่วงวันที่ที่ระบุใน Linux ได้อย่างไร
ฉันจำเป็นต้องรู้ประวัติเข้าสู่ระบบสำหรับผู้ใช้ที่ระบุ (เช่นเวลาเข้าสู่ระบบและออกจากระบบ) ฉันจะแยกประวัตินี้สำหรับช่วงวันที่ที่ระบุใน Linux ได้อย่างไร
คำตอบ:
คุณสามารถลองlast
คำสั่ง:
last john
มันพิมพ์ประวัติเข้าสู่ระบบ / ออกของผู้ใช้จอห์น ในขณะที่ทำงานเพียง
last
พิมพ์ประวัติเข้าสู่ระบบ / ออกของผู้ใช้ทั้งหมด
หากคุณต้องการย้อนกลับไปในประวัติศาสตร์มากกว่าหนึ่งเดือนคุณสามารถอ่าน/var/log/wtmp.1
ไฟล์ด้วยlast
คำสั่ง
last -f wtmp.1 john
john
จะแสดงประวัติความเป็นมาของเดือนก่อนหน้าการเข้าสู่ระบบสำหรับผู้ใช้
เอาต์พุตบันทึกล่าสุดไม่หนักเกินไปและง่ายต่อการวิเคราะห์ดังนั้นฉันอาจจะไพพ์เอาต์พุตเป็น grep เพื่อค้นหารูปแบบวันที่ที่เฉพาะเจาะจง
last john | grep -E 'Aug (2[0-9]|30) '
เพื่อแสดง 20-30 สิงหาคม หรือสิ่งที่ชอบ:
last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) '
ที่จะได้รับ 10-30 john
กรกฎาคมสำหรับผู้ใช้
จะดึงประวัติการเข้าสู่ระบบสำหรับช่วงวันที่ที่ระบุใน Linux ได้อย่างไร
ตัวอย่างในการแสดงรายชื่อผู้ใช้ทั้งหมดที่เข้าสู่ระบบจาก 25 ถึง 28 / สิงหาคม:
last | while read line
do
date=`date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s`
[[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line
done
awk '{ print $5" "$6" "$7 }'
เพื่อแยกเวลาวันที่ที่คอลัมน์ที่เกี่ยวข้องจากlast
เอาท์พุท+%s
เพื่อแปลงวันที่และเวลาเป็นเวลา-ge
ยืนมากกว่าหรือเท่ากับ-le
ยืนน้อยกว่าหรือเท่ากับlast <username>
นอกจากนี้คุณยังสามารถทำมันได้สำหรับผู้ใช้ที่เฉพาะเจาะจงกับ
last
เอาต์พุตสามารถอ่านได้สวยใช่ไหม
grep
จาก "15 สิงหาคม 09:00" ถึง "25 สิงหาคม 21:00"