Antworten:
AFAIK Sie können es nicht einfach durch reinen psBefehl mit Optionen erreichen. Sie können jedoch einige Textverarbeitungsprogramme verwenden, awkum das zu tun, was Sie möchten:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
Dies ergibt sich aus psund dann für jede Zeile mit Ausnahme der ersten, die die fünfte Spalte, die normalerweise in KB ist, durch MB ersetzt, wobei das M-Suffix hinzugefügt wird.
Sie können es zu einem Alias machen und in einer .bashrc- Datei speichern, damit Sie es mit so etwas wie aufrufen können myps.
Die meisten Leute fragen sich, wie man das Format beibehält oder andere Einheiten und Präzision verwendet.
Für eine einfache Version können Sie den column -tAusgabefilter verwenden:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}' | column -t
Dies erkennt jedoch Leerzeichen in der letzten Spalte nicht korrekt. Leider müssen wir uns mit der Textformatierung befassen und unsere eigene Formatzeichenfolge im printfähnlichen Format vorbereiten .
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);}'
Erläuterung:
NR==1Bedingung ist nur für die erste Zeile (Header). Wir verwenden die ursprüngliche ps-Ausgabe, um zu bestimmen, wo COMMAND startet:
o=$0 speichert die unveränderte gesamte Zeile, damit wir sie später verwenden könnena=match($0,$11) findet die Position des 11. Feldes (an der Stelle, an der die COMMAND-Spalte in der ursprünglichen Ausgabe beginnt)NR>1ist für folgende Zeilen (Daten). Wir ändern das 5. Feld:
$5=int(10*$5/1024)/10"M" Ändert den Wert in Megabyte mit einer Dezimalstelle und fügt das Suffix "M" hinzu.%-10sbedeutet sfür Zeichenfolge, 10für 10 Zeichen breit, -für Linksausrichtung%8sbedeutet sfür Zeichenfolge, 8für 8 Zeichen breit und da keine -Ausgabe dieses Feldes rechtsbündig ist.substr(o, a)Nimmt die Teilzeichenfolge der ursprünglichen Zeile (daher ozuvor gespeichert) ab der Position, adie in der vorherigen Bedingung berechnet wurde, sodass die Befehlsausgabe mit beibehaltenen Leerzeichen angezeigt werden kann.1.23GB):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
psFormatierung beizubehalten? Tabs sind komplett entfernt mitawk
man pslegt nahe, dass es keine solche eingebaute Option gibt.