จะแสดงเฉพาะกระบวนการและกระบวนการที่สืบทอดได้บน htop อย่างไร


10

htopฉันต้องการที่จะตรวจสอบเฉพาะกระบวนการและเด็กที่ประมวลผลบน การกรองชื่อกระบวนการหลักแสดงรายการเฉพาะกระบวนการหลักไม่ใช่รายการย่อย ฉันจะแสดงกระบวนการลูกได้อย่างไร?

คำตอบ:


8

ภายใต้ Linux คุณสามารถทำได้:

htop -p `pstree -p $PID | perl -ne 'push @t, /\((\d+)\)/g; END { print join ",", @t }'`

ที่$PIDเป็นกระบวนการราก งานนี้เป็นดังนี้:

  1. รายการของกระบวนการที่ต้องการจะได้รับด้วยการpstreeใช้-pตัวเลือกเพื่อแสดงรายการด้วย PID ของพวกเขา
  2. เอาต์พุตจะถูกไพพ์ไปยังสคริปต์ Perl ที่ดึงข้อมูล PID โดยใช้นิพจน์ปกติ (ที่นี่\((\d+)\)) และเอาต์พุตจะถูกคั่นด้วยเครื่องหมายจุลภาค
  3. htop -pรายการนี้ให้เป็นข้อโต้แย้งของ

สำหรับระบบปฏิบัติการอื่นเช่น Mac OS คุณอาจต้องปรับเปลี่ยนนิพจน์ทั่วไปที่ดึงข้อมูล PID

หมายเหตุ: เป็นไปไม่ได้ที่จะอัปเดตรายการด้วยเด็ก ๆ ที่เพิ่งวางไข่ในภายหลังเนื่องจากเมื่อhtopดำเนินการแล้วจะไม่มีใครทำอะไรได้อีก นี่เป็นข้อ จำกัด ของhtop(เวอร์ชันปัจจุบัน: 2.0.2)


$PIDสามารถเป็นชื่อของกระบวนการหรือจะต้องมี id?
becko

@becko $PIDจะต้องมี pid pgrepแต่คุณจะได้รับรหัสจากชื่อของกระบวนการที่มี
vinc17

5
นี้จะไม่อัปเดตเมื่อมีเด็กใหม่วางไข่แม้ว่า ... ชอบที่จะใช้ sth เช่นนั้นสำหรับการตรวจสอบเฉพาะสิ่งในเซสชั่น tmux ของฉัน
black_puppydog

@black_puppydog ฉันด้วย!
becko

บน macOS ด้วยpstreeจาก homebrew:htop -p `pstree -p $PID | perl -ne 'push @t, /--- (\d+) /g; END { print join ",", @t }'`
jpsim

0
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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.