Réponses:
Pourquoi utiliser psquand vous pouvez le faire facilement avec la topcommande?
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
topfonctionne réellement.
toplit 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, psne reconnaît pas --sort, mais propose -rde 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 headaussi 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 psc'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 pssolutions proposées.
top -o cpu -n 5un moyen de réaliser la même chose. Est-ce que quelqu'un sait? Mon topest différent de votre top.
-oet -ndéfinit le nombre de fois où il rafraîchit l'affichage avant de quitter.
topne semble pas avoir un mode batch, ce qui est assez limitant. Il doit y avoir un moyen d'intégrer d' topautres commandes. Je vais faire des recherches.
topfonctionné 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 kest identique à --sortet cspécifie le %cpuchamp 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 psa 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 pspage de manuel.
$ man ps
topsur 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, cmdoucommand
%cpu: Cet argument indique le pourcentage d'utilisation du processeur par le processeur au format "##. #". Ici pcpupeut é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 pmempeut é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'pfonctionne 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.