J'ai essayé de le googler, mais je ne le trouve pas. Je cherche:
nombre de threads en cours X
nombre total de threads en cours d'exécution
J'ai essayé de le googler, mais je ne le trouve pas. Je cherche:
nombre de threads en cours X
nombre total de threads en cours d'exécution
Réponses:
Pour obtenir le nombre de threads pour un pid donné:
ps -o nlwp <pid>
Pour obtenir la somme de tous les threads exécutés dans le système:
ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
ps -o nlwp <pid>
renvoie NLWP :), qu'est-ce que cela signifie?
ps h -o nlwp $pid
Je fonde cette réponse ps axms
. ps
est un excellent outil pour répertorier ce qui est en cours d'exécution.
Si vous souhaitez filtrer cela par un processus, vous pouvez essayer quelque chose comme ceci:
echo $(( `ps axms | grep firefox | wc -l` - 1))
Nous soustrayons 1 car grep apparaîtra dans cette liste.
Pour tous les threads en général, cela devrait fonctionner:
echo $(( `ps axms | wc -l` - 1))
Nous soustrayons un cette fois car il y a une ligne d'en-tête.
Pour obtenir le nombre total de threads (petits morceaux d'un processus s'exécutant simultanément) d'un, vous pouvez utiliser la commande ps -o nlwp <pid>
Cela fonctionne tout le temps. Mais si vous préférez essayer de le voir à travers un fichier. vous devriez probablement regarder les fichiers qui ont été créés pour chaque processus du système. Là, vous pouvez obtenir les détails ultimes du processus. Pour chaque processus, un dossier est créé dans lequel /proc/<pid>
vous pouvez également voir tous les autres détails.
Sur Linux en particulier, voici une façon de le faire par processus:
#!/bin/sh
while read name val; do
if [ "$name" = Threads: ]; then
printf %s\\n "$val"
return
fi
done < /proc/"$1"/status
Vous pouvez ensuite invoquer ce script avec un PID comme argument, et il indiquera le nombre de threads appartenant à ce processus.
Pour obtenir le nombre de threads pour l'ensemble du système, cela suffit:
#!/bin/sh
count() {
printf %s\\n "$#"
}
count /proc/[0-9]*/task/[0-9]*
Ces approches peuvent sembler un peu peu orthodoxe car ils comptent beaucoup sur les fonctionnalités shell, mais en retour , deux d'entre eux sont plus rapides que les correspondants ps
et les awk
approches à base sur ma machine (tout en ne créant pas des fils supplémentaires de leur propre pour les tuyaux). Gardez à l'esprit que le shell lancé pour exécuter ces scripts aura un thread qui lui est propre (ou plus, si vous utilisez une implémentation étrange).