ฉันจะค้นหาหน่วยความจำทั้งหมดที่จัดสรรสำหรับกระบวนการเฉพาะใน Ubuntu ได้อย่างไร
ฉันจะค้นหาหน่วยความจำทั้งหมดที่จัดสรรสำหรับกระบวนการเฉพาะใน Ubuntu ได้อย่างไร
คำตอบ:
ลอง:
pidof bash | xargs ps -o rss,sz,vsz
เพื่อค้นหาการใช้หน่วยความจำของbash
เชลล์ปัจจุบันของคุณ(สมมติว่าคุณกำลังใช้bash
) เปลี่ยนbash
เป็นสิ่งที่คุณกำลังตรวจสอบ หากคุณอยู่ภายใต้กระบวนการใดกระบวนการหนึ่งให้ใช้ด้วยตัวเอง:
ps -o rss,sz,vsz <process id>
จากman
หน้า:
RSS
: ขนาดชุดที่อยู่อาศัย, หน่วยความจำกายภาพที่ไม่ได้สลับที่งานใช้ (เป็นกิโลไบต์)
SZ
: ขนาดในหน้าทางกายภาพของภาพหลักของกระบวนการ ซึ่งรวมถึงข้อความข้อมูลและพื้นที่สแต็ค
VSZ
: ขนาดหน่วยความจำเสมือนของกระบวนการเป็น KiB (1024- ไบต์หน่วย)
man
หน้าps
จะแสดงรายการทั้งหมดข้อโต้แย้งไปได้ที่จะ-o
มีตัวเลือก (มีค่อนข้างน้อยให้เลือก) แทนที่จะ-o rss,sz
ใช้v
ตัวเลือกลักษณะ BSD (ไม่มีเส้นประ) ซึ่งแสดงโครงร่างหน่วยความจำสำรอง
คุณสามารถใช้pmap
ซึ่งแสดงแผนที่หน่วยความจำของกระบวนการ:
pmap -p pid
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ดูหน้าคนman pmap
หรือมีลักษณะที่pmap (1): รายงานแผนที่หน่วยความจำของกระบวนการ - หน้าคนลินุกซ์
วิธีการค้นหาหน่วยความจำทั้งหมดที่จัดสรรสำหรับกระบวนการเฉพาะในอูบุนตู?
คุณไม่ได้กำหนดสิ่งที่เป็นจัดสรรหน่วยความจำสำหรับกระบวนการและจริงว่าเป็นคำถามที่ซับซ้อนสวย (สิ่งที่เกี่ยวกับการแมปหน่วยความจำร่วม - ดูmmap (2)สำหรับรายละเอียด; สิ่งที่เกี่ยวกับหน่วยความจำที่ใช้ร่วมกัน POSIX - ดูshm_overview (7)มานาน สิ่งที่เกี่ยวกับบางหน้าในแคชหน้าใช้สำหรับเปิดไฟล์ ฯลฯ ... )
คุณสามารถใช้/proc/
ระบบไฟล์ (ซึ่ง BTW ถูกใช้โดยps
, pmap
, top
, htop
ฯลฯ .... ) อ่านproc (5)สำหรับข้อมูลเพิ่มเติม โดยเฉพาะอย่างยิ่งสำหรับกระบวนการของ pid 1234 คุณสามารถใช้/proc/1234/status
, /proc/1234/statm
, /proc/1234/maps
ฯลฯ ... พวกเขาเป็นต้นฉบับเดิมหลอกไฟล์ทั้งหมด (บิตเช่นท่อ) ที่คุณสามารถมองเห็นได้ด้วยcat
(หรืออ่านตามลำดับภายในโปรแกรมบางส่วน) BTW จากภายในโปรแกรมที่คุณอาจใช้/proc/self
(ซึ่งเป็น symlink หลอก) เช่นอ่านตามลำดับ/proc/self/status
ฯลฯ ...