วิธีรับจำนวนเธรดทั้งหมด (จากเทอร์มินัล) (ต่อกระบวนการและผลรวมสำหรับกระบวนการทั้งหมด)


32

ฉันลอง googling แล้ว แต่หาไม่เจอ ฉันกำลังมองหา:

  1. จำนวนเธรดในกระบวนการ X

  2. จำนวนเธรดทั้งหมดที่รันอยู่ในปัจจุบัน


คำตอบ:


53

ในการรับจำนวนเธรดสำหรับ pid ที่ระบุ:

ps -o nlwp <pid>

ในการรับผลรวมของเธรดทั้งหมดที่ทำงานอยู่ในระบบ:

ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'

1
ps -o nlwp <pid>ส่งคืน NLWP :) นั่นหมายความว่าอย่างไร
Siddharth

2
@Siddharth NLWP หมายถึง Number of LightWeight Processes ซึ่งเป็นจำนวนเธรด
jcollado

คุณสามารถระงับ "NLWP" ด้วย "h" (ซ่อนส่วนหัว); เช่น:ps h -o nlwp $pid
bufh

7

สำหรับการค้นหาจำนวนเธรดที่ใช้กระบวนการเดียวคุณสามารถดู/proc/<pid>/statusได้ ควรแสดงรายการจำนวนเธรดเป็นหนึ่งในฟิลด์


3

ฉัน basing ps axmsคำตอบนี้ไปรอบ ๆ psเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการแสดงรายการที่กำลังทำงานอยู่

หากคุณต้องการกรองโดยกระบวนการคุณสามารถลองดังนี้:

echo $(( `ps axms | grep firefox | wc -l`  - 1))

เราลบ 1 เพราะ grep จะแสดงในรายการนั้น

สำหรับเธรดทั้งหมดโดยทั่วไปสิ่งนี้ควรใช้งานได้:

echo $(( `ps axms | wc -l`  - 1))

เราลบหนึ่งครั้งนี้เนื่องจากมีแถวส่วนหัว


สิ่งนี้ไม่ถูกต้องเนื่องจากมีการรายงานเธรดเพิ่มเติมต่อกระบวนการ
คะแนน _ ต่ำกว่า

1

เพื่อให้ได้จำนวนทั้งหมดของเธรด (ชิ้นส่วนเล็ก ๆ ของกระบวนการทำงานพร้อมกัน) ของ a คุณสามารถใช้คำสั่งps -o nlwp <pid>มันทำงานตลอดเวลา แต่หากคุณต้องการลองดูผ่านไฟล์ คุณควรดูไฟล์ที่สร้างขึ้นสำหรับแต่ละกระบวนการของระบบ คุณจะได้รับรายละเอียดขั้นสูงสุดของกระบวนการ สำหรับแต่ละกระบวนการมีโฟลเดอร์ที่สร้างขึ้นใน/proc/<pid>นั้นคุณสามารถดูรายละเอียดอื่น ๆ ทั้งหมดได้


1

บน linux โดยเฉพาะนี่คือวิธีหนึ่งในการทำต่อกระบวนการ:

#!/bin/sh
while read name val; do
    if [ "$name" = Threads: ]; then
        printf %s\\n "$val"
        return
    fi
done < /proc/"$1"/status

จากนั้นคุณสามารถเรียกใช้สคริปต์นี้ด้วย PID เป็นอาร์กิวเมนต์และจะรายงานจำนวนเธรดที่กระบวนการนั้นเป็นเจ้าของ

ในการรับจำนวนเธรดสำหรับทั้งระบบข้อนี้จะเพียงพอ

#!/bin/sh
count() {
    printf %s\\n "$#"
}
count /proc/[0-9]*/task/[0-9]*

วิธีการเหล่านี้อาจดูเหมือนผิดเพี้ยนเล็กน้อยในการที่พวกเขาพึ่งพาคุณสมบัติของเชลล์อย่างมาก แต่ในทางกลับกันทั้งสองวิธีนั้นเร็วกว่าวิธีที่สอดคล้องกันpsและเป็นawkพื้นฐานบนเครื่องของฉัน โปรดจำไว้ว่าเชลล์ที่เปิดตัวเพื่อเรียกใช้สคริปต์เหล่านี้จะมีเธรดของตัวเอง (หรือมากกว่านั้นหากคุณใช้การติดตั้งที่แปลก)

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