Comment faire pour que la commande ps affiche la mémoire en mb au lieu de kb?
11
La commande Linux ps montre différentes utilisations de la mémoire comme rss, taille en Ko par défaut. Existe-t-il un moyen d'afficher en mb ou gb comme le ls -s --human-readablefait?
L'absence de mention dans man psme suggère qu'il n'y a pas une telle option intégrée.
Ulrich Schwarz
Réponses:
20
AFAIK vous ne pouvez pas y parvenir simplement par une pscommande pure avec des options. Cependant, vous pouvez utiliser certains processeurs de texte comme awket faire faire ce que vous voulez:
Cela prend le résultat de pspuis pour chaque ligne sauf la première, il remplace la 5e colonne qui est en Ko normalement, en Mo en ajoutant le suffixe M.
Vous pouvez en faire un alias et le stocker dans un fichier .bashrc afin de pouvoir l'appeler par quelque chose comme myps.
La plupart des gens demandent comment conserver le format ou utiliser d'autres unités et précision.
Pour une version simple, vous pouvez utiliser le column -tfiltre de sortie:
Cependant, cela ne reconnaît pas correctement les espaces dans la dernière colonne. Malheureusement, nous devons gérer le formatage du texte et préparer notre propre chaîne de formatage au printfformat similaire.
NR==1la condition concerne uniquement la première ligne (en-tête). Nous utilisons la sortie ps d'origine pour déterminer où COMMAND commence:
o=$0 stocke toute la ligne non modifiée afin que nous puissions l'utiliser plus tard
a=match($0,$11) trouve l'emplacement du 11ème champ (qui devrait être l'endroit où la colonne COMMAND commence dans la sortie d'origine)
NR>1est pour les lignes suivantes (données). Nous changeons le 5ème domaine:
$5=int(10*$5/1024)/10"M" change la valeur en mégaoctets avec une décimale et ajoute le suffixe "M".
printf affiche tous les champs sous forme de colonne:
%-10ssignifie spour chaîne, 10pour 10 caractères de large, -pour alignement à gauche
%8ssignifie spour chaîne, 8pour 8 caractères de large, et en raison de l'absence de -sortie de ce champ est aligné à droite.
substr(o, a)prend la sous-chaîne de la ligne d'origine (donc ostockée avant) à partir de la position acalculée dans la condition précédente, afin que nous puissions afficher la sortie de la commande avec des espaces préservés.
man ps
me suggère qu'il n'y a pas une telle option intégrée.Réponses:
AFAIK vous ne pouvez pas y parvenir simplement par une
ps
commande pure avec des options. Cependant, vous pouvez utiliser certains processeurs de texte commeawk
et faire faire ce que vous voulez:Cela prend le résultat de
ps
puis pour chaque ligne sauf la première, il remplace la 5e colonne qui est en Ko normalement, en Mo en ajoutant le suffixe M.Vous pouvez en faire un alias et le stocker dans un fichier .bashrc afin de pouvoir l'appeler par quelque chose comme
myps
.La plupart des gens demandent comment conserver le format ou utiliser d'autres unités et précision.
Pour une version simple, vous pouvez utiliser le
column -t
filtre de sortie:Cependant, cela ne reconnaît pas correctement les espaces dans la dernière colonne. Malheureusement, nous devons gérer le formatage du texte et préparer notre propre chaîne de formatage au
printf
format similaire.Explication:
NR==1
la condition concerne uniquement la première ligne (en-tête). Nous utilisons la sortie ps d'origine pour déterminer où COMMAND commence:o=$0
stocke toute la ligne non modifiée afin que nous puissions l'utiliser plus tarda=match($0,$11)
trouve l'emplacement du 11ème champ (qui devrait être l'endroit où la colonne COMMAND commence dans la sortie d'origine)NR>1
est pour les lignes suivantes (données). Nous changeons le 5ème domaine:$5=int(10*$5/1024)/10"M"
change la valeur en mégaoctets avec une décimale et ajoute le suffixe "M".%-10s
signifies
pour chaîne,10
pour 10 caractères de large,-
pour alignement à gauche%8s
signifies
pour chaîne,8
pour 8 caractères de large, et en raison de l'absence de-
sortie de ce champ est aligné à droite.substr(o, a)
prend la sous-chaîne de la ligne d'origine (donco
stockée avant) à partir de la positiona
calculée dans la condition précédente, afin que nous puissions afficher la sortie de la commande avec des espaces préservés.la source
1.23GB
):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
ps
mise en forme? Les onglets sont complètement enlevés avecawk