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 pse awkbasati 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).