htop
ฉันต้องการที่จะตรวจสอบเฉพาะกระบวนการและเด็กที่ประมวลผลบน การกรองชื่อกระบวนการหลักแสดงรายการเฉพาะกระบวนการหลักไม่ใช่รายการย่อย ฉันจะแสดงกระบวนการลูกได้อย่างไร?
htop
ฉันต้องการที่จะตรวจสอบเฉพาะกระบวนการและเด็กที่ประมวลผลบน การกรองชื่อกระบวนการหลักแสดงรายการเฉพาะกระบวนการหลักไม่ใช่รายการย่อย ฉันจะแสดงกระบวนการลูกได้อย่างไร?
คำตอบ:
ภายใต้ Linux คุณสามารถทำได้:
htop -p `pstree -p $PID | perl -ne 'push @t, /\((\d+)\)/g; END { print join ",", @t }'`
ที่$PID
เป็นกระบวนการราก งานนี้เป็นดังนี้:
pstree
ใช้-p
ตัวเลือกเพื่อแสดงรายการด้วย PID ของพวกเขา\((\d+)\)
) และเอาต์พุตจะถูกคั่นด้วยเครื่องหมายจุลภาคhtop -p
รายการนี้ให้เป็นข้อโต้แย้งของสำหรับระบบปฏิบัติการอื่นเช่น Mac OS คุณอาจต้องปรับเปลี่ยนนิพจน์ทั่วไปที่ดึงข้อมูล PID
หมายเหตุ: เป็นไปไม่ได้ที่จะอัปเดตรายการด้วยเด็ก ๆ ที่เพิ่งวางไข่ในภายหลังเนื่องจากเมื่อhtop
ดำเนินการแล้วจะไม่มีใครทำอะไรได้อีก นี่เป็นข้อ จำกัด ของhtop
(เวอร์ชันปัจจุบัน: 2.0.2)
$PID
จะต้องมี pid pgrep
แต่คุณจะได้รับรหัสจากชื่อของกระบวนการที่มี
pstree
จาก homebrew:htop -p `pstree -p $PID | perl -ne 'push @t, /--- (\d+) /g; END { print join ",", @t }'`
htop -p $(ps -ef | awk -v proc=15305 '$3 == proc { cnt++;if (cnt == 1) { printf "%s",$2 } else { printf ",%s",$2 } }')
ใช้ awk เพื่อสร้างรายการของ id กระบวนการที่คั่นด้วยเครื่องหมายจุลภาคจากเอาต์พุตของ ps -ef ผ่าน id กระบวนการหลักเป็น proc แล้วส่งผ่านสิ่งนี้ไปยัง htop -p
$PID
สามารถเป็นชื่อของกระบวนการหรือจะต้องมี id?