Ho provato a cercarlo su Google, ma non riesco a trovarlo. Sto cercando:
numero di thread nel processo X
numero totale di thread attualmente in esecuzione
Ho provato a cercarlo su Google, ma non riesco a trovarlo. Sto cercando:
numero di thread nel processo X
numero totale di thread attualmente in esecuzione
Risposte:
Per ottenere il numero di thread per un determinato pid:
ps -o nlwp <pid>
Per ottenere la somma di tutti i thread in esecuzione nel sistema:
ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
ps -o nlwp <pid>
restituisce NLWP :), cosa significa?
ps h -o nlwp $pid
Sto basando questa risposta in giro ps axms
. ps
è un ottimo strumento per elencare ciò che è in esecuzione.
Se desideri filtrarlo in base a un processo, puoi provare qualcosa del genere:
echo $(( `ps axms | grep firefox | wc -l` - 1))
Sottraiamo 1 perché grep verrà visualizzato in tale elenco.
Per tutti i thread in generale questo dovrebbe funzionare:
echo $(( `ps axms | wc -l` - 1))
Ne sottraggiamo una volta perché c'è una riga di intestazione.
Per ottenere il numero totale dei thread (piccoli pezzi di un processo in esecuzione contemporaneamente) di un è possibile utilizzare il comando ps -o nlwp <pid>
Funziona sempre. Ma se preferisci provare a vederlo attraverso un file. dovresti probabilmente guardare i file che sono stati creati per ogni singolo processo del sistema. Lì puoi ottenere i dettagli finali del processo. Per ogni processo, c'è una cartella creata in /proc/<pid>
cui puoi vedere anche tutti gli altri dettagli.
Su Linux in particolare, ecco un modo per farlo per processo:
#!/bin/sh
while read name val; do
if [ "$name" = Threads: ]; then
printf %s\\n "$val"
return
fi
done < /proc/"$1"/status
È quindi possibile invocare questo script con un PID come argomento e riporterà il numero di thread di proprietà di quel processo.
Per ottenere il conteggio dei thread per l'intero sistema, è sufficiente:
#!/bin/sh
count() {
printf %s\\n "$#"
}
count /proc/[0-9]*/task/[0-9]*
Questi approcci possono sembrare un po 'poco ortodossi in quanto si basano fortemente sulle funzionalità della shell, ma in cambio entrambi sono più veloci degli approcci corrispondenti ps
e awk
basati sulla mia macchina (pur non creando thread aggiuntivi propri per le pipe). Ricorda che la shell lanciata per eseguire questi script avrà un thread a sé stante (o più, se stai usando una strana implementazione).