Risposte:
AFAIK non puoi raggiungerlo semplicemente con un puro pscomando con opzioni. Tuttavia puoi usare alcuni processori di testo come awke farlo per fare quello che vuoi:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
Questo prende il risultato da pse 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 -tfiltro 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 printfformato 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==1la 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".%-10ssignifica sper stringa, 10per 10 caratteri di larghezza, -per allineare a sinistra%8ssignifica sper stringa, 8per 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 omemorizzata in precedenza) a partire dalla posizione acalcolata 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;}'
psformattazione? Le schede sono completamente rimosse conawk
man psmi suggerisce che non esiste tale opzione integrata.