Usando / proc / stat para o número de processos em execução no sistema

4

Como se pode descobrir o verdadeiro número de processos em execução no seu sistema? Diversos artigos mencionam o uso de ps para contar o número de processos. Mas recentemente eu olhei para cat /proc/sys e o resultado foi:

cpu  972 0 1894 189609 236 26 490 0 0 0
cpu0 972 0 1894 189609 236 26 490 0 0 0
intr 101595 157 10 0 0 0 0 0 0 3 0 0 0 136 0 0 0 1406 0 0 14936 934 19133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 244344
btime 1405754990
processes 3912
procs_running 3
procs_blocked 0
softirq 122778 0 48263 439 15599 19037 0 1 0 7405 32034

Ele mostra o número de processos como 3912. Usar algo como ps -A --no-headers | wc -l mostra apenas 173 processos.

Por que /proc/stat mostra muitos outros processos? (um aumento de 3739 processos) Quem está dando o número certo?

    
por CMCDragonkai 19.07.2014 / 10:10

2 respostas

9

Veja a documentação de proc(5) , e você verá isso para o campo processos :

Number of forks since boot.

Portanto, simplesmente não é o número que você está procurando. ps dará a você, como você já sabe, contar os diretórios com apenas números em seus nomes em /proc é outra abordagem.

    
por 19.07.2014 / 10:24
11

Dependendo de você querer incluir ou não tópicos, adicione a opção -L ao seu comando ps :

$ ps -A --no-headers | wc -l
359
$ ps -AL --no-headers | wc -l
967

Os segmentos não são listados separadamente por ps por padrão. O ponto dos tópicos é que eles são vários encadeamentos de execução dentro de um espaço de endereço do processo .

    
por 19.07.2014 / 14:30