Câu trả lời:
1
nó vì nó in một dòng như USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
cho tiêu đề bảng.
Để có được số lượng chủ đề cho một pid nhất định:
$ ps -o nlwp <pid>
Trường hợp nlwp
viết tắt của Số lượng quá trình trọng lượng nhẹ (chủ đề) . Như vậy ps
bí danh nlwp
để thcount
, có nghĩa là
$ ps -o thcount <pid>
cũng làm việc
Nếu bạn muốn theo dõi số lượng luồng, chỉ cần sử dụng watch
:
$ watch ps -o thcount <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 }'
watch
chỉ huy. Tuy nhiên, lưu ý rằng việc sử dụng thcount
có thể thất bại đối với một số người (Red Hat ...), mặc dù có nlwp
hiệu quả với tôi.
Mỗi luồng trong một quy trình tạo ra một thư mục theo /proc/<pid>/task
. Đếm số lượng thư mục và bạn có số lượng chủ đề.
find /proc/<PID>/task -maxdepth 1 -type d -print | wc -l
. Chỉ cần thay thế <PID> bằng ID tiến trình mà bạn có thể nhận được top
hoặc sử dụngps
ps -eLf
trên shell sẽ cung cấp cho bạn một danh sách tất cả các luồng và tiến trình hiện đang chạy trên hệ thống. Hoặc, bạn có thể chạy top
lệnh sau đó nhấn 'H' để chuyển danh sách chủ đề.
-p
vào điều này nếu cần thiết, hoặc bất cứ điều gì khác. Đây là mức tối thiểu bạn cần để xem danh sách chủ đề.
Nếu bạn dùng:
ps uH p <PID_OF_U_PROCESS> | wc -l
Bạn phải trừ 1 cho kết quả, vì một trong những dòng "wc" đang đếm là các tiêu đề của lệnh "ps".
ps
một trong các chủ đề.
$ ps H p pid-id
H - Liệt kê tất cả các luồng riêng lẻ trong một quy trình
hoặc là
$cat /proc/pid-id/status
pid-id là ID tiến trình
ví dụ .. (Cắt bớt đầu ra bên dưới)
root@abc:~# cat /proc/8443/status
Name: abcdd
State: S (sleeping)
Tgid: 8443
VmSwap: 0 kB
Threads: 4
SigQ: 0/256556
SigPnd: 0000000000000000
Cách dễ nhất là sử dụng "htop". Bạn có thể cài đặt "htop" (phiên bản hàng đầu của fancier) sẽ hiển thị cho bạn tất cả các lõi, quy trình và sử dụng bộ nhớ của bạn.
Nhấn "Shift + H" để hiển thị tất cả quá trình hoặc nhấn lại để ẩn nó. Nhấn phím "F4" để tìm kiếm tên quy trình của bạn.
Cài đặt trên Ubuntu hoặc Debian:
sudo apt-get install htop
Cài đặt trên Redhat hoặc CentOS:
yum install htop
dnf install htop [On Fedora 22+ releases]
Nếu bạn muốn biên dịch "htop" từ mã nguồn, bạn sẽ tìm thấy nó ở đây .
Nếu bạn đang cố gắng tìm ra số lượng chủ đề bằng cách sử dụng cpu cho một pid cụ thể, tôi sẽ sử dụng:
top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
Nếu bạn quan tâm đến các luồng thực sự hoạt động - như khi thực hiện một thao tác nào đó (không bị chặn, không bị hẹn giờ, không báo cáo "luồng đang chạy" nhưng thực sự chờ đợi một luồng phát dữ liệu), trái ngược với việc ngồi không hoạt động nhưng trực tiếp - - sau đó bạn có thể quan tâm đến hoạt động jstack .
Tập lệnh bash đơn giản này chạy jstack
sau đó lọc ra tất cả các luồng mà theo heuristic dường như không hoạt động, hiển thị cho bạn các dấu vết ngăn xếp cho các luồng thực sự tiêu thụ chu kỳ CPU.
Nếu bạn muốn số lượng luồng trên mỗi người dùng trong một hệ thống linux thì bạn nên sử dụng:
ps -eLf | grep <USER> | awk '{ num += $6 } END { print num }'
trong khi sử dụng tên người dùng mong muốn.