Per un output di lunghezza ancora più dinamico della risposta di moosaka (ad esempio, se si hanno pochi nomi utente molto lunghi, ma che vengono utilizzati molto raramente e non si desidera che lo schermo venga perso la maggior parte del tempo), è possibile utilizzare:
ps utente -eo: $ (ps axho uid | sort -u | xargs getent passwd | taglio -f1 -d: | wc -L), pid, PPID, c, STIME, TNAME, tempo, cmd
Essa renderà la lunghezza della colonna nome utente il tempo più lungo del nome utente più lungo del processo attualmente in esecuzione. Tuttavia, se il nuovo processo con un nome utente più lungo inizia in una frazione di secondo mentre il comando è in esecuzione, è ancora possibile visualizzare un numero, ma per il 99,99% delle volte è molto più bello)
spiegazione: $(ps axho uid [...] | wc -L)
calcola la lunghezza massima del nome utente del processo attualmente in esecuzione, e poi eseguire il normale ps con quella lunghezza del nome utente
in alternativa, se si vuole ps a guardare come al solito per i nomi utente breve (< = 8 caratteri), e non fare mente per pochi nomi utente lunghi in uscita per essere disallineati con le intestazioni, puoi fare qualcosa come:
ps ax -o utente: 40, pid, ppid, c, stime, tname, ora, cmd | perl -pe 'if (/^(\ S +)/e lunghezza $ 1> 8) {s/^ (\ S +) \ s +/$ 1 /} else {s/^ (. {9}) \ s +/$ 1 /} '
cosa che fa è rendere colonna nome utente uscita molto lungo (-o user:40
), e quindi postprocesses l'uscita così lunghi nomi utente (length $1 > 8
) presentano solo uno spazio tra loro e colonna successiva, e nomi utente brevi (else {
) vengono tagliate torna al valore predefinito (fino a 8 caratteri nome utente e il resto fino al 9 carattere sono spazi)
Forse perché i numeri UID hanno una lunghezza massima abbastanza prevedibile, mentre i nomi utente possono essere piuttosto lunghi? –
Sì, è la lunghezza del nome utente (se è più lungo di 8 caratteri, allora 'ps aux' sostituirà l'uid per il nome). Esecuzione di 'man ps' ora per ottenere dettagli. –