Comment afficher les cinq principaux processus consommant du CPU avec ps?
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"
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
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)
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
.
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
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
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.
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].
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
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.