ฉันจะบอกได้อย่างไรว่าฉันต้องการแสดงรายการไฟล์ทางกายภาพเท่านั้น (ไม่ใช่ซ็อกเก็ต, ไม่ใช่การเชื่อมต่อ TCP / IP, ไฟล์ทางกายภาพเท่านั้น)
ฉันจะบอกได้อย่างไรว่าฉันต้องการแสดงรายการไฟล์ทางกายภาพเท่านั้น (ไม่ใช่ซ็อกเก็ต, ไม่ใช่การเชื่อมต่อ TCP / IP, ไฟล์ทางกายภาพเท่านั้น)
คำตอบ:
เพียงแค่อ่านหน้าคู่มือบางหน้ามันก็ปรากฏว่าคุณใช้คำสั่ง:
sudo lsof /
นี่จะแสดงรายการไฟล์ที่เปิดทั้งหมดในไดเรกทอรี / ซึ่งเป็นทุกอย่างในระบบไฟล์ Linux เพิ่งทดสอบและมันจะแสดงเฉพาะ REG และ DIR
ตัวอย่างเพิ่มเติม:
lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /
0-999 จำกัด เฉพาะไฟล์ที่มีหมายเลขตัวอธิบายไฟล์
/
อาจมีสวิตช์ แต่ถ้าคุณไม่คำนึงถึงการกรองผ่าน grep คุณสามารถทำได้sudo lsof | egrep 'REG|DIR'
โดยสมมติว่า "ฟิสิคัลไฟล์" คุณหมายถึงไฟล์และไดเรกทอรีปกติ
ดูส่วน OUTPUT :: TYPE ของ man page man lsof
สำหรับประเภททั้งหมดที่อาจอยู่ในคอลัมน์นั้น
นี่คือสิ่งที่ฉันทำซึ่งทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน:
lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u
-F n
ตัวเลือกในการlsof
จะทำให้มันเพียงพิมพ์ชื่อของไฟล์ที่เปิด แต่ละบรรทัดเอาต์พุตที่มีชื่อของไฟล์ที่เปิดจะเริ่มต้นด้วยตัวอักษรnตามด้วยชื่อทันที ไฟล์ปกติจะเป็นชื่อที่สมบูรณ์และผ่านการรับรองของไฟล์เสมอ grep ^n/
จะเลือกเฉพาะเส้นที่มีชื่อขึ้นต้นด้วย/
(หมายถึงแน่นอนชื่อไฟล์ที่มีคุณสมบัติครบถ้วน); ดังนั้นการกำจัดสิ่งต่าง ๆ เช่นพอร์ตที่เปิดซ็อกเก็ตไปป์ (เช่น FIFO) ฯลฯcut -c2-
จะกำจัดอักขระตัวแรกที่n
เหลือเพียงชื่อไฟล์เท่านั้น จากนั้นในที่สุดก็sort -u
จะกำจัดรายการที่ซ้ำกัน
คำเตือนนี้จะรวมถึงไฟล์ที่ไม่ปกติ/
ตราบใดที่เริ่มต้นชื่อของพวกเขาด้วย ตัวอย่างเช่นไฟล์ทั้งหมดที่เริ่มต้นด้วยสิ่งต่อไปนี้จะรวมอยู่ด้วย:
และอาจมีบางอย่างขึ้นอยู่กับระบบปฏิบัติการของคุณ