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 comme awk
et faire faire ce que vous voulez:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
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:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}' | column -t
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.
ps afu | awk 'NR==1 {o=$0; a=match($0,$11);}; NR>1 {o=$0;$5=int(10*$5/1024)/10"M";}{ printf "%-8s %6s %-5s %-5s %9s %9s %-8s %-4s %-6s %-5s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, substr(o, a);}'
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
signifie s
pour chaîne, 10
pour 10 caractères de large, -
pour alignement à gauche%8s
signifie s
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 (donc o
stockée avant) à partir de la position a
calculée dans la condition précédente, afin que nous puissions afficher la sortie de la commande avec des espaces préservés.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
man ps
me suggère qu'il n'y a pas une telle option intégrée.