Yanıtlar:
1çünkü USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDtablo başlığı gibi bir satır yazdırıyor .
Belirli bir pid için iş parçacığı sayısını almak için:
$ ps -o nlwp <pid>
Nerede nlwpiçin standları Işık Ağırlık Sayısı (konuları) Süreçleri . Bu nedenle pstakma nlwpiçin thcountolan araçlarının,
$ ps -o thcount <pid>
aynı zamanda çalışıyor.
İplik sayısını izlemek istiyorsanız, şunu kullanın watch:
$ watch ps -o thcount <pid>
Sistemde çalışan tüm iş parçacıklarının toplamını almak için:
$ ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
watchkomut. Ancak, benim için işe yarasa da, kullanmanın thcountbazıları için başarısız olabileceğini unutmayın (Red Hat ...) nlwp.
Bir süreçteki her iş parçacığı altında bir dizin oluşturur /proc/<pid>/task. Dizinlerin sayısını sayın ve iş parçacığı sayısına sahipsiniz.
find /proc/<PID>/task -maxdepth 1 -type d -print | wc -l. <PID> 'yi alabileceğiniz topveya kullanabileceğiniz işlem kimliğinizle değiştirinps
ps -eLfKabukta size şu anda sistemde çalışan tüm iş parçacıklarının ve işlemlerin bir listesini verecektir. Veya, topileti dizisi listelerini değiştirmek için komutu çalıştırıp 'H' tuşuna basabilirsiniz .
-pGerekirse buna bir eklemek veya başka bir şey yapmak kolaydır . Konu listesini görmek için ihtiyacınız olan minimum değer budur.
JStack oldukça ucuzdur - bir seçenek, aktif konuları bulmak için çıktıyı grep aracılığıyla ve sonra da wc -l ile boru kullanmak olabilir.
Daha grafiksel olarak, belirli bir işlem için iş parçacığı sayısını gösteren JConsole.
Eğer kullanırsan:
ps uH p <PID_OF_U_PROCESS> | wc -l
Sonuca 1 çıkarmanız gerekir, çünkü "wc" sayan satırlardan biri "ps" komutunun başlıklarıdır.
psbiri olarak saymamalısınız.
$ ps H p pid-id
H - Bir süreçteki tüm bireysel konuları listeler
veya
$cat /proc/pid-id/status
pid-id, İşlem Kimliğidir
ör. (Aşağıdaki çıktı kesildi)
root@abc:~# cat /proc/8443/status
Name: abcdd
State: S (sleeping)
Tgid: 8443
VmSwap: 0 kB
Threads: 4
SigQ: 0/256556
SigPnd: 0000000000000000
jvmtop , diğer ölçümlerin yanında mevcut jvm iş parçacığı sayısını gösterebilir.
En kolay yol "htop" kullanmaktır. Size tüm çekirdeklerinizi, işlemlerinizi ve bellek kullanımınızı gösterecek olan "htop" ı (top'un daha süslü bir sürümü) kurabilirsiniz.
Tüm süreci göstermek için "Shift + H" tuşlarına basın veya gizlemek için tekrar basın. İşlem adınızı aramak için "F4" tuşuna basın.
Ubuntu veya Debian'a yükleme:
sudo apt-get install htop
Redhat veya CentOS üzerine yükleme:
yum install htop
dnf install htop [On Fedora 22+ releases]
"Htop" u kaynak kodundan derlemek istiyorsanız, burada bulacaksınız .
Belirli bir pid için cpu kullanan iş parçacığı sayısını bulmaya çalışıyorsanız, şunu kullanırım:
top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
Boşta oturup canlı olarak oturmak yerine , gerçekten aktif olan konularla ilgileniyorsanız - bir şeyler yapmak gibi (bloke değil, zamanlanmış_beklemede değil, "iş parçacığı çalıştığını" bildirmemek, ancak gerçekten bir akışın veri vermesini beklemek) - - o zaman jstack-active ile ilgilenebilirsiniz .
Bu basit bash betiği, jstackdaha sonra sezgisel yöntemlerle boşta çalışıyor gibi görünen tüm iş parçacıklarını filtreler ve size aslında CPU döngülerini tüketen iş parçacıkları için yığın izlerini gösterir.
Bir linux sisteminde kullanıcı başına iş parçacığı sayısını istiyorsanız şunu kullanmalısınız:
ps -eLf | grep <USER> | awk '{ num += $6 } END { print num }'
nerede istediğiniz kullanıcı adını kullanın.