L'écriture
ps aux | awk '{print $11}'
Me donne toutes les instances de processus, mais comment puis-je les compter, y a-t-il une commande qui fait ça?
As ps aux
imprime des informations sur un processus par ligne (y compris un titre qui peut être désactivé avec l'option --no-heading
).
Par conséquent, vous pouvez facilement compter les processus en comptant simplement les lignes de cette sortie, en utilisant wc
:
ps aux --no-heading | wc -l
Si vous voulez utiliser awk
:
ps aux --no-heading | awk 'END {print NR}'
et si vous voulez compter le processus d'un utilisateur spécifique:
ps -u ravexina -f --no-header | wc -l
Vous pouvez également vérifier vous-même le système de fichiers /proc
:
ls /proc | grep ^[1-9] -c
ou
ls -d /proc/[1-9]* | wc -l
D'autres réponses ont déjà indiqué que ps aux
ajoute un en-tête, vous avez donc également besoin de l'option --no-heading
. Nous pouvons également utiliser la commande pgrep
pour obtenir les PID de processus, puis les compter.
Fondamentalement, nous pouvons faire,
pgrep '^.*$' | awk 'END{print NR}'
L'astuce ici est que le bloc de code END{}
est toujours exécuté après le traitement du fichier, de stdin ou du pipeline, et que le NR reste inchangé, ce qui correspond au "nombre d'enregistrements" ou au nombre de lignes s'il ne s'agit que d'un fichier ou d'un pipeline. En ce qui concerne pgrep
name__, nous ne faisons que mettre en correspondance tout processus avec l'expression régulière ^.*$
, obtenant ainsi la liste de tous les PID.
Et pour compter les lignes, vous pouvez prendre littéralement n'importe quelle méthode de Comment compter les lignes de texte? question, il n'est pas nécessaire que ce soit awk
name__.