web-dev-qa-db-fra.com

Afficher les cinq principaux processus consommant du CPU avec `ps`

Comment afficher les cinq principaux processus consommant du CPU avec ps?

115
PlanasB

Pourquoi utiliser ps alors que vous pouvez le faire facilement avec la commande top?

Si vous devez utiliser ps, essayez ceci:

ps aux | sort -nrk 3,3 | head -n 5

Si vous voulez quelque chose de vraiment top avec des mises à jour constantes, utilisez watch

watch "ps aux | sort -nrk 3,3 | head -n 5"
112
Boban P.

La bonne réponse est:

ps --sort=-pcpu | head -n 6

Vous pouvez donc spécifier des colonnes sans interférer avec le tri.

Ex:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6

Remarque pour MAC OS X: Sous Mac OS X, ps ne reconnaît pas --sort, mais propose -r pour trier par utilisation actuelle du processeur. Ainsi, pour Mac OS X, vous pouvez utiliser:

ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
94
Facundo Victor

Selon vos besoins, vous pouvez trouver cela un peu plus lisible:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

exemple de sortie:

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond

(les champs sont% CPU, PID, USER, COMMAND)

28
Ryan Horrisberger

Je ne pense pas que ps soit ce que vous recherchez. Avez-vous regardé la sortie de top?

Si vous avez GNU-Top, essayez d'utiliser son mode batch pour cracher une liste de processus triée par utilisation du processeur et en utilisant head/tail pour obtenir les 5 premières lignes (les 8 premières sont des en-têtes):

top -b -n 1 | head -n 12  | tail -n 5

Le sommet BSD semble se comporter différemment et n'a pas de mode non interactif, utilisez donc l'une des autres solutions basées sur ps.

24
Caleb

Un liner le plus rapide que j'ai trouvé pour cela (note 6 car l'en-tête s'additionne):

ps aux k-pcpu | head -6
6
Nestor Urquiza

Notez que les versions actuelles de ps ont une capacité de tri en leur sein, basée sur les codes de champ (donnés dans la page de manuel ps). Le code de champ pour l'utilisation du processeur est "c". Vous pouvez utiliser --sort c à la fin d'une commande ps, par ex. ps aux --sort c

Cela mettra le processus en utilisant le plus de processeurs au bas de la liste. Inverser l'ordre de la liste en ajoutant un moins au code de champ utilisé pour trier par ex. ps aux --sort -c

5
Cian D

Afin d'ajouter un point à d'autres réponses utiles, je préfère:

ps auxk-c | head -6

Il imprime également l'en-tête, qui est Nice.

Ici k est identique à --sort et c spécifie l'utilisation du processeur (alias %cpu) pour le tri, tandis que - est pour le tri inverse.

Vous pouvez ajouter plus de spécificateurs séparés par ,, d'autres spécificateurs possibles sont: %mem, args, bsdstart, pid, gid, uid ... dont vous trouverez la liste complète dans SPECIFICATEURS DE FORMAT STANDARD section de la page de manuel. Par exemple:

 ps auxk -gid,-%mem | head -11

afficherait 10 processus avec l'ID de groupe le plus élevé, triés en interne par utilisation de la mémoire.

4
2i3r

L'outil de ligne de commande ps a sa propre option de tri, donc je préfère:

$ ps -eo pcpu,args --sort=-%cpu | head

Vous pouvez ajouter les colonnes de votre choix. Découvrez les autres options disponibles via la page de manuel ps.

$ man ps

Je crois que la façon la plus simple de voir processus de consommation de 5 processeurs principaux est,

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

Pour voir processus consommant le plus de mémoire 5 est,

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

Où,

-e: Cet indicateur est utilisé pour sélectionner tous les processus

-o: Cet indicateur est utilisé pour formater comme défini par l'utilisateur.

pid: cet argument utilisé pour afficher le pid

comm: Cet argument est utilisé pour afficher uniquement le nom de la commande. Pour obtenir la commande complète, utilisez args, cmd ou command

%cpu: Cet argument montre le pourcentage d'utilisation du processeur du processus au format "##. #". Ici, pcpu peut également être utilisé.

%mem: Cet argument indique le rapport entre la taille de l'ensemble résident du processus et la mémoire physique de la machine, exprimé en pourcentage. Ici, pmem peut également être utilisé.

--sort: Spécifiez l'ordre de tri. Après = le - le signe est utilisé pour trier la valeur la plus élevée en haut où l'option par défaut qui est + consiste à répertorier l'ordre numérique croissant [c'est-à-dire 0 à n].

0
muhammad

top sur Mac OS X dispose d'une option de mode d'enregistrement sous la forme de top -l numberOfSamples (qui semble être l'équivalent du mode batch de GNU top). Il est cependant nécessaire d'avoir au moins deux échantillons car "le premier échantillon affiché aura un% CPU non valide affiché pour chaque processus, car il est calculé en utilisant le delta entre les échantillons "(man 1 top).

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
0
ulf

top affichera ce qui utilise votre CPU. Si vous l'avez installé, htop vous permet un contrôle plus fin, y compris le filtrage par - dans votre cas - CPU.

0
PSN