Réponses:
Pourquoi utiliser ps
quand vous pouvez le faire facilement avec la top
commande?
Si vous devez utiliser ps
, essayez ceci:
ps aux | sort -nrk 3,3 | head -n 5
Si vous voulez quelque chose qui est vraiment 'top'esq avec des mises à jour constantes, utilisez watch
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
top
fonctionne réellement.
top
lit la liste des processus et affiche seul le résultat, sans passer par aucun autre processus
La bonne réponse est :
ps --sort=-pcpu | head -n 6
Ainsi, vous pouvez 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
de trier en fonction de l'utilisation actuelle du processeur. Ainsi, pour Mac OS X, vous pouvez utiliser:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
bash
(x2, ou head
aussi bien) ps
...
sort
, la seconde montre comment spécifier des colonnes sans interférer avec le tri. Quand on explique quelque chose, il vaut toujours mieux être concis et expliquer une chose à la fois.
En fonction de vos besoins, vous trouverez ceci 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
c'est ce que vous recherchez. Avez-vous regardé la sortie de top
?
Si vous avez GNU-Top, essayez d’utiliser son mode batch pour créer une liste de processus triée par utilisation du processeur et utilisez tête / queue 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 dessus de BSD semble se comporter différemment et ne dispose pas d'un mode non interactif, utilisez donc l'une des ps
solutions proposées.
top -o cpu -n 5
un moyen de réaliser la même chose. Est-ce que quelqu'un sait? Mon top
est différent de votre top
.
-o
et -n
définit le nombre de fois où il rafraîchit l'affichage avant de quitter.
top
ne semble pas avoir un mode batch, ce qui est assez limitant. Il doit y avoir un moyen d'intégrer d' top
autres commandes. Je vais faire des recherches.
top
fonctionné comme décrit cet après-midi. À votre santé.
La plus rapide des doublures que j'ai trouvées pour cela (note 6 car l'en-tête est la somme):
ps aux k-pcpu | head -6
Notez que les versions actuelles de ps possèdent une capacité de tri en fonction des codes de champ (indiqué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 exempleps aux --sort c
Cela mettra le processus utilisant le plus de processeurs au bas de la liste. Inversez l'ordre de la liste en ajoutant un moins au code de champ utilisé pour trier, par exempleps aux --sort -c
Afin d'ajouter un point à d'autres réponses intéressantes, je préfère:
ps auxk-c | head -6
Il affiche également l'en-tête, ce qui est agréable.
Ici k
est identique à --sort
et c
spécifie le %cpu
champ d' utilisation du processeur (alias ) pour le tri, alors que -
c'est pour le tri inversé.
Vous pouvez ajouter plusieurs spécificateurs séparés par d' ,
autres spécificateurs possibles sont: %mem
, args
, bsdstart
, pid
, gid
, uid
... que vous pouvez trouver la liste complète dans STANDARD FORMAT PRESCRIPTEURS section de page de manuel. Par exemple:
ps auxk -gid,-%mem | head -11
imprimerait 10 processus avec l’identifiant 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, je préfère donc:
$ ps -eo pcpu,args --sort=-%cpu | head
Vous pouvez ajouter les colonnes que vous voulez. Voir quelles autres options sont disponibles via la ps
page de manuel.
$ man ps
top
sur Mac OS X a une option de mode de journalisation sous la forme de top -l numberOfSamples
(qui semble être l'équivalent du mode de traitement par lots de GNU top
). Il est toutefois nécessaire d’avoir au moins deux échantillons car "le premier échantillon affiché aura un pourcentage de CPU non valide pour chaque processus, car il est calculé à l’aide du delta entre é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
Je crois que le moyen le plus simple de voir le processus consommant le plus de 5 cpu est,
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
Pour voir le top 5 processus consommateur de mémoire 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 en tant que défini par l'utilisateur.
pid
: Cet argument utilisé pour montrer le pid
comm
: Cet argument est utilisé uniquement pour afficher le nom de la commande. Pour obtenir une utilisation complète de la commande args
, cmd
oucommand
%cpu
: Cet argument indique le pourcentage d'utilisation du processeur par le processeur 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. Une fois que =
le -
signe est utilisé pour trier la valeur la plus élevée en haut, l’option par défaut consistant +
à répertorier un ordre numérique croissant [c.-à-d. De 0 à n].
top -bn1 |sed -n '7,12'p
fonctionne comme un joli petit paquebot aussi.
Bien que je préfère utiliser ps avec --sort = X -o X, Y, Z
en utilisant ps, vous pouvez extraire différentes statistiques grep pour un processus OU un utilisateur, puis les totaliser OU les avg avec un tuyau à effacer.