Top Command - Comment réduire les colonnes affichées

17

Pouvons-nous obtenir une colonne spécifique dans une commande supérieure, par exemple, je ne suis intéressé que par la colonne d'utilisation de la mémoire et d'utilisation du processeur.

Comment réduire les colonnes affichées de la commande supérieure aux seules colonnes ci-dessus?

Surya
la source
3
Quel OS? Quelle topvariante? Il existe des dizaines de meilleures implémentations.
Stéphane Chazelas
Veuillez nous fournir votre système d'exploitation et sa version supérieure ( top -h).
slm

Réponses:

19

REMARQUE: en supposant que vous disposez de cette version de top(procps) . Vous pouvez vérifier avec cette commande:

$ top --version
    top: procps version 3.2.8
usage:  top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

procps est souvent la version topincluse avec Fedora / CentOS / RHEL et d'autres variantes.

Modification des colonnes

Si vous regardez dans la page de manuel, topvous verrez une section intitulée: "2b. SÉLECTIONNER ET COMMANDER des colonnes". Il existe des raccourcis clavier pour basculer la visibilité des différents champs / colonnes.

Par exemple:

  f,o     . Fields/Columns: 'f' add or remove; 'o' change display order
  F or O  . Select sort field
  <,>     . Move sort field: '<' next col left; '>' next col right

Vous pouvez utiliser la touche florsque topvous êtes dans pour accéder à un écran secondaire où vous pouvez spécifier quelles colonnes doivent être basculées visibles ou non:

Par exemple:

Current Fields:  ANOPQRSTUVbcdefgjlmyzWHIKX  for window 3:Mem
Toggle fields via field letter, type any other key to return 

* A: PID        = Process Id                                      * W: S          = Process Status
* N: %MEM       = Memory usage (RES)                              * H: PR         = Priority
* O: VIRT       = Virtual Image (kb)                              * I: NI         = Nice value
* P: SWAP       = Swapped size (kb)                               * K: %CPU       = CPU usage
* Q: RES        = Resident size (kb)                              * X: COMMAND    = Command name/line
* R: CODE       = Code size (kb)
...

Il y en a plus, ce ne sont que des exemples. Lorsque vous avez terminé de basculer les colonnes comme vous le souhaitez, utilisez le Escpour sortir de l'écran de sélection.

Enregistrement de la configuration

Vous pouvez utiliser le Shift+ Wpour enregistrer vos modifications afin qu'elles soient les valeurs par défaut:

  W         Write configuration file

Le fichier est stocké ici $HOME/.toprc, et ressemble à ceci:

$ more .toprc 
RCfile for "top with windows"       # shameless braggin'
Id:a, Mode_altscr=0, Mode_irixps=1, Delay_time=1.000, Curwin=2
Def fieldscur=AEHIoqTWKNMBcdfgjpLrsuvyzX
    winflags=129016, sortindx=19, maxtasks=0
    summclr=2, msgsclr=5, headclr=7, taskclr=7
Job fieldscur=ABcefgjlrstuvyzMKNHIWOPQDX
    winflags=63416, sortindx=13, maxtasks=0
    summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem fieldscur=ANOPQRSTUVbcdefgjlmyzWHIKX
    winflags=65464, sortindx=13, maxtasks=0
    summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr fieldscur=ABDECGfhijlopqrstuvyzMKNWX
    winflags=65464, sortindx=12, maxtasks=0
    summclr=3, msgsclr=3, headclr=2, taskclr=7

Voir la section 5 de la page de manuel pour plus de détails, "5. FICHIERS".

slm
la source
Existe-t-il un moyen de modifier les colonnes / champs via un indicateur de ligne de commande? Cela serait vraiment utile, par exemple pour vérifier le top sur différentes machines et obtenir une sortie standardisée.
naught101
@ naught101 - si vous avez une nouvelle question, posez-la sur le site principal. Les commentaires ne sont pas vraiment destinés à cela.
slm
2

[Centos-6 | Ubuntu 12.10] Cette cmd affiche les 4 meilleurs processus triés par UTILISATION DU CPU

top -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5

Production

%CPU      %MEM      COMMAND
7.7       0.2       top
0.0       0.3       init
0.0       0.0       kthreadd
0.0       0.0       migration/0

Remarque: head -n 5 au lieu de 4 car nous avons également le nom de la colonne

colonnes $ 9, $ 10, $ 12 signifie CPU, MEM, COMMAND. Utilisez la commande «top» pour obtenir les numéros de colonne

Trier par UTILISATION DE LA MÉMOIRE (votre "top" doit prendre en charge -m pour exécuter ceci)

# this work on my centos-6 machine, NOT work on my Ubuntu 12.10
top -m -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5
chapeau mouillé
la source
De quelle version de haut s'agit-il?
slm
J'ai utilisé centos-6.4. La commande supérieure sur Ubuntu ne prend pas en charge -m pour trier mon utilisation de la mémoire.
wethat
Intéressant, je suis sur Fedora (14), je reçois la version procps de top. Je viens de vérifier et sur CentOS 5 + 6, ils utilisent également les meilleurs procps. Votre commande n'a pas fonctionné sur F14. Il fonctionne cependant sur CentOS 5 + 6. Juste un info pour toute personne qui tombe sur ce fil!
slm
1

pour afficher au format json et supprimer l'en-tête également,

top -bn 1 | grep "^ " | awk '{ printf("%s%s%s\n","{CPU:"$9",","MEM:"$10",","CMD:"$12"}"); }' | head -n 6 | tail -n +2

sortie comme ci-dessous,

{CPU:6.4,MEM:0.3,CMD:gnome-terminal}
{CPU:6.4,MEM:1.9,CMD:chrome}
{CPU:0.0,MEM:0.0,CMD:init}
{CPU:0.0,MEM:0.0,CMD:kthreadd}
{CPU:0.0,MEM:0.0,CMD:ksoftirqd/0}
Som
la source
Vous grep | awk | head | tailpouvez être fusionné en un seul awk.
roaima
0

Configuration en ligne de commande
Je ne voulais pas affecter tout mon utilisateur en écrasant l'utilisateur .toprc, j'ai donc trouvé une solution pour avoir une configuration distincte par cas d'utilisation.
Vous pouvez toputiliser un fichier de configuration personnalisé au lieu de celui du répertoire personnel de vos utilisateurs.
Modifiez simplement la HOMEvariable en un répertoire personnalisé contenant le .toprcfichier correspondant à vos besoins.

# TOPRC_PROFILE_DIRECTORY contains .toprc (or can be created by saving using shift+w after configuring using keybindings) 
TOPRC_PROFILE_DIRECTORY="<your-directory>"
HOME="$TOPRC_PROFILE_DIRECTORY" top
Thomas
la source