Tôi đã thử googling nó, nhưng tôi không thể tìm thấy nó. Tôi đang tìm kiếm:
số lượng chủ đề trong quy trình X
tổng số luồng hiện đang chạy
Tôi đã thử googling nó, nhưng tôi không thể tìm thấy nó. Tôi đang tìm kiếm:
số lượng chủ đề trong quy trình X
tổng số luồng hiện đang chạy
Câu trả lời:
Để có được số lượng chủ đề cho một pid nhất định:
ps -o nlwp <pid>
Để lấy tổng của tất cả các luồng đang chạy trong hệ thống:
ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
ps -o nlwp <pid>
trả về NLWP :), điều đó có nghĩa là gì?
ps h -o nlwp $pid
Tôi đang căn cứ câu trả lời này ps axms
. ps
là một công cụ tuyệt vời để liệt kê những gì đang chạy.
Nếu bạn muốn lọc theo quy trình, bạn có thể thử một cái gì đó như thế này:
echo $(( `ps axms | grep firefox | wc -l` - 1))
Chúng tôi trừ 1 vì grep sẽ hiển thị trong danh sách đó.
Đối với tất cả các chủ đề nói chung, điều này sẽ làm việc:
echo $(( `ps axms | wc -l` - 1))
Chúng tôi trừ đi lần này vì có một hàng tiêu đề.
Để có được tổng số luồng (các phần nhỏ của một tiến trình đang chạy đồng thời) của một bạn có thể sử dụng lệnh ps -o nlwp <pid>
Nó hoạt động mọi lúc. Nhưng nếu bạn muốn thử xem nó qua một tập tin. bạn có thể nên xem các tệp được tạo cho mỗi và mọi quy trình của hệ thống. Ở đó bạn có thể nhận được các chi tiết cuối cùng của quá trình. Đối với mỗi và mọi quy trình, có một thư mục được tạo trong /proc/<pid>
đó bạn cũng có thể xem tất cả các chi tiết khác.
Trên linux, đây là một cách để thực hiện theo quy trình:
#!/bin/sh
while read name val; do
if [ "$name" = Threads: ]; then
printf %s\\n "$val"
return
fi
done < /proc/"$1"/status
Sau đó, bạn có thể gọi tập lệnh này với một PID làm đối số và nó sẽ báo cáo số lượng luồng được sở hữu bởi quá trình đó.
Để có được số lượng luồng cho toàn bộ hệ thống, điều này đủ:
#!/bin/sh
count() {
printf %s\\n "$#"
}
count /proc/[0-9]*/task/[0-9]*
Các cách tiếp cận này có vẻ hơi không chính thống ở chỗ chúng phụ thuộc nhiều vào các tính năng vỏ, nhưng bù lại cả hai đều nhanh hơn các cách tiếp cận tương ứng ps
và awk
dựa trên máy của tôi (trong khi cũng không tạo thêm các luồng riêng cho đường ống). Hãy nhớ rằng shell được khởi chạy để chạy các tập lệnh này sẽ có một luồng của riêng nó (hoặc hơn, nếu bạn đang sử dụng một triển khai lạ).