Réponses:
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:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
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:
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 printfformat 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==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 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>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".%-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.1.23GB):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
psmise en forme? Les onglets sont complètement enlevés avecawk
man psme suggère qu'il n'y a pas une telle option intégrée.