Risposte:
AFAIK non puoi raggiungerlo semplicemente con un puro ps
comando con opzioni. Tuttavia puoi usare alcuni processori di testo come awk
e farlo per fare quello che vuoi:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
Questo prende il risultato da ps
e poi per ogni riga tranne la prima che sostituisce la quinta colonna che è normalmente in KB, a MB aggiungendo il suffisso M.
Puoi renderlo un alias e memorizzarlo nel file .bashrc in modo da poterlo chiamare con qualcosa del genere myps
.
Molte persone chiedono come conservare il formato o usare altre unità e precisione.
Per la versione semplice è possibile utilizzare il column -t
filtro di output:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}' | column -t
Questo tuttavia non riconosce correttamente gli spazi nell'ultima colonna. Purtroppo dobbiamo occuparci della formattazione del testo e preparare la nostra stringa di formato in un printf
formato simile.
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);}'
Spiegazione:
NR==1
la condizione è solo per la prima riga (intestazione). Stiamo utilizzando l'output ps originale per determinare dove inizia COMMAND:
o=$0
memorizza l'intera riga non modificata in modo da poterla utilizzare in seguitoa=match($0,$11)
trova la posizione dell'11 ° campo (che dovrebbe essere dove la colonna COMMAND sta iniziando nell'output originale)NR>1
è per le seguenti righe (dati). Stiamo cambiando il 5 ° campo:
$5=int(10*$5/1024)/10"M"
cambia il valore in Megabyte con un decimale e aggiunge il suffisso "M".%-10s
significa s
per stringa, 10
per 10 caratteri di larghezza, -
per allineare a sinistra%8s
significa s
per stringa, 8
per 8 caratteri di larghezza, e poiché non viene -
prodotto alcun output di questo campo è allineato a destra.substr(o, a)
prende la sottostringa della linea originale (quindi o
memorizzata in precedenza) a partire dalla posizione a
calcolata nella condizione precedente, in modo da poter visualizzare l'output del comando con spazi conservati.1.23GB
):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
ps
formattazione? Le schede sono completamente rimosse conawk
man ps
mi suggerisce che non esiste tale opzione integrata.