Jawaban:
1
karena mencetak garis seperti USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
untuk header tabel.
Untuk mendapatkan jumlah utas untuk pid yang diberikan:
$ ps -o nlwp <pid>
Di mana nlwp
singkatan Jumlah Proses Ringan (utas) . Dengan demikian ps
alias nlwp
untuk thcount
, yang berarti bahwa
$ ps -o thcount <pid>
tidak bekerja.
Jika Anda ingin memantau jumlah utas, cukup gunakan watch
:
$ watch ps -o thcount <pid>
Untuk mendapatkan jumlah semua utas yang berjalan di sistem:
$ ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
watch
perintahnya. Namun, perhatikan bahwa menggunakan thcount
dapat gagal untuk beberapa (Red Hat ...), meskipun nlwp
bekerja untuk saya.
Setiap utas dalam suatu proses membuat direktori di bawah /proc/<pid>/task
. Hitung jumlah direktori, dan Anda memiliki jumlah utas.
find /proc/<PID>/task -maxdepth 1 -type d -print | wc -l
. Cukup ganti <PID> dengan ID proses yang dapat Anda peroleh top
atau gunakanps
ps -eLf
pada shell akan memberi Anda daftar semua utas dan proses yang saat ini berjalan pada sistem. Atau, Anda dapat menjalankan top
perintah lalu tekan 'H' untuk beralih daftar utas.
-p
ini jika perlu, atau apa pun. Ini adalah minimum yang Anda butuhkan untuk melihat daftar utas.
JStack cukup murah - salah satu opsi adalah menyalurkan output melalui grep untuk menemukan utas aktif dan kemudian menyalurkan melalui wc -l.
Lebih grafis adalah JConsole, yang menampilkan jumlah utas untuk proses yang diberikan.
Jika Anda menggunakan:
ps uH p <PID_OF_U_PROCESS> | wc -l
Anda harus mengurangi 1 pada hasilnya, karena salah satu baris "wc" sedang menghitung adalah header dari perintah "ps".
ps
sebagai salah satu utas.
$ ps H p pid-id
H - Daftar semua utas secara individu dalam suatu proses
atau
$cat /proc/pid-id/status
pid-id adalah ID Proses
mis .. (Terpotong output di bawah ini)
root@abc:~# cat /proc/8443/status
Name: abcdd
State: S (sleeping)
Tgid: 8443
VmSwap: 0 kB
Threads: 4
SigQ: 0/256556
SigPnd: 0000000000000000
jvmtop dapat menampilkan jumlah utas jvm saat ini di samping metrik lainnya.
Cara termudah adalah menggunakan "htop". Anda dapat menginstal "htop" (versi teratas yang lebih bagus) yang akan menunjukkan semua inti, proses, dan penggunaan memori Anda.
Tekan "Shift + H" untuk menampilkan semua proses atau tekan lagi untuk menyembunyikannya. Tekan tombol "F4" untuk mencari nama proses Anda.
Menginstal di Ubuntu atau Debian:
sudo apt-get install htop
Menginstal di Redhat atau CentOS:
yum install htop
dnf install htop [On Fedora 22+ releases]
Jika Anda ingin mengompilasi "htop" dari kode sumber, Anda akan menemukannya di sini .
Jika Anda mencoba mencari tahu jumlah utas menggunakan cpu untuk pid yang diberikan, saya akan menggunakan:
top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
Jika Anda tertarik pada utas yang benar-benar aktif - seperti dalam melakukan sesuatu (tidak diblokir, tidak timed_waiting, tidak melaporkan "utas berjalan" tetapi benar-benar menunggu aliran untuk memberikan data) sebagai lawan dari duduk diam tetapi hidup - - maka Anda mungkin tertarik pada jstack-aktif .
Skrip bash sederhana ini berjalan jstack
kemudian memfilter semua utas yang menurut heuristik tampaknya idle, menunjukkan kepada Anda tumpukan jejak untuk utas tersebut yang sebenarnya menghabiskan siklus CPU.
Jika Anda ingin jumlah utas per pengguna dalam sistem linux maka Anda harus menggunakan:
ps -eLf | grep <USER> | awk '{ num += $6 } END { print num }'
dimana gunakan nama pengguna yang diinginkan.