Yanıtlar:
1
çünkü USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tablo 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 nlwp
için standları Işık Ağırlık Sayısı (konuları) Süreçleri . Bu nedenle ps
takma nlwp
için thcount
olan 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 }'
watch
komut. Ancak, benim için işe yarasa da, kullanmanın thcount
bazı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 top
veya kullanabileceğiniz işlem kimliğinizle değiştirinps
ps -eLf
Kabukta size şu anda sistemde çalışan tüm iş parçacıklarının ve işlemlerin bir listesini verecektir. Veya, top
ileti dizisi listelerini değiştirmek için komutu çalıştırıp 'H' tuşuna basabilirsiniz .
-p
Gerekirse 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.
ps
biri 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, jstack
daha 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.