Gözetlemeye çalıştım ama bulamıyorum. Bakıyorum:
X sürecindeki iş parçacıklarının sayısı
şu anda çalışan toplam konu sayısı
Gözetlemeye çalıştım ama bulamıyorum. Bakıyorum:
X sürecindeki iş parçacıklarının sayısı
şu anda çalışan toplam konu sayısı
Yanıtlar:
Verilen bir ihale için iş parçacığı sayısını almak için:
ps -o nlwp <pid>
Sistemde çalışan tüm iş parçacıklarının toplamını elde etmek için:
ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
ps -o nlwp <pid>
NLWP'yi verir :), bu ne anlama geliyor?
ps h -o nlwp $pid
Bu cevabı temel alıyorum ps axms
. ps
çalışanların listelenmesi için harika bir araçtır.
Bunu bir işlemle filtrelemek istiyorsanız, bunun gibi bir şeyi deneyebilirsiniz:
echo $(( `ps axms | grep firefox | wc -l` - 1))
1 çıkardık çünkü grep bu listede gösterilecek.
Genel olarak tüm iş parçacıkları için bu çalışması gerekir:
echo $(( `ps axms | wc -l` - 1))
Bu sefer bir tane çıkartıyoruz, çünkü bir başlık satırı var.
Toplam iş parçacığı sayısını (aynı anda çalışan bir işlemin küçük parçaları) almak için bu komutu ps -o nlwp <pid>
her zaman kullanabilirsiniz. Ancak bir dosyayı görmeyi denemeyi tercih ederseniz. Muhtemelen sistemin her işlemi için oluşturulan dosyalara bakmalısınız. Orada sürecin nihai ayrıntılarını alabilirsiniz. Her işlem için, orada yaratılan bir klasör /proc/<pid>
var, diğer tüm detayları da görebilirsiniz.
Özellikle Linux üzerinde, işlem başına yapmanın bir yolu:
#!/bin/sh
while read name val; do
if [ "$name" = Threads: ]; then
printf %s\\n "$val"
return
fi
done < /proc/"$1"/status
Ardından, bu betiği bir PID ile bağımsız değişken olarak çağırabilirsiniz ve işlemin sahip olduğu iş parçacıklarının sayısını rapor eder.
Tüm sistemin iş parçacığı sayısını almak için bu yeterlidir:
#!/bin/sh
count() {
printf %s\\n "$#"
}
count /proc/[0-9]*/task/[0-9]*
Bu yaklaşımlar, özellikle kabuk özelliklerine dayanmaları nedeniyle biraz sıradışı görünebilir, ancak bunun karşılığında ikisi de makinemdeki karşılık gelen ps
ve awk
temelli yaklaşımlardan daha hızlıdır (aynı zamanda borular için kendi başlarının dişlerini oluşturmazlar). Bu komut dosyalarını çalıştırmak için başlatılan kabuğun kendine ait bir dizisinin olacağını (veya garip bir uygulama kullanıyorsanız) aklınızda bulundurun.