อะไรคือความแตกต่างระหว่าง `lsof -p <pid> | wc -l` และ `ls / proc / <pid> / fd | ห้องสุขา -l`


13

ความเป็นมา:ฉันกำลังเล่นกับการตรวจสอบ ulimit สำหรับกระบวนการทำงานสำหรับผู้ใช้เฉพาะ (ฉันเคยเห็นกระบวนการที่เริ่มต้นด้วยขีด จำกัด ที่ไม่ถูกต้อง) ฉันถามกูรูผู้เชี่ยวชาญด้านลีนุกซ์สองสามตัวและอีกหนึ่งแนะนำlsof -p <pid>ในขณะที่โพรเซสอื่นแนะนำls /proc/<pid>/fdแต่ก็ไม่เป็นไปในทางบวก จำกัด การเปิดไฟล์สำหรับกระบวนการ

แล้วมันคืออะไร?

lsof -p <pid> | wc -l

หรือ

ls /proc/<pid>/fd | wc -l

โปรดอธิบายอย่างละเอียดเกี่ยวกับความแตกต่าง ขอบคุณ!


3
ฟังดูเหมือนการบ้าน
ewwhite

1
ไม่ใช่การบ้าน เพิ่มคำอธิบายที่ดีขึ้น ฉันอ่านlsofman page และในขณะที่ฉันสงสัยว่าคำตอบคือไฟล์ที่แม็พหน่วยความจำฉันต้องการการยืนยันจากบุคคลที่มีประสบการณ์มากกว่า
Jared

คำตอบ:


10

lsofจะให้หน่วยความจำที่คุณแมป. so-files ซึ่งในทางเทคนิคไม่เหมือนกับไฟล์ที่จัดการกับแอพพลิเคชั่น /proc/<pid>/fdเป็นจุดวัดสำหรับตัวอธิบายไฟล์ที่เปิด - อย่างไรก็ตาม: กล่าวถึงในหน้า proc-man - หากเธรดหลักของโปรแกรมมัลติเธรดถูกยกเลิกไดเรกทอรีนี้จะไม่สามารถใช้งานได้

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -lls /proc/<pid>/fd | wc -lจะแสดงรายการเช่นเดียวกับ

/proc/<pid>/mapsแผนที่หน่วยความจำที่มีอยู่ใน


lsofช่วยให้คุณเกือบเอาท์พุทเดียวกัน แต่ก็ยังมีcwd, rtdและtxtอธิบายไฟล์
Ian Bamforth

โปรดทราบว่าจำนวนช่องว่างระหว่างCOMMANDและPIDอาจแตกต่างกัน แทนที่ช่องว่างด้วย[[:space:]]*เพื่อให้ทั่วไปยิ่งขึ้น
Ian Bamforth

ฉันยังพบlsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l ที่นี่ในขณะที่lsofใน Android เปลือก ( adb shell) ไม่สนับสนุนและ-a -dดังนั้นฉันจึงใช้เวอร์ชันของ Kvisle ในที่สุด
วันหยุดสุดสัปดาห์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.