it-swarm.it

Come posso ottenere un elenco completo dei processi in Solaris, senza linee troncate?

Esiste un modo per generare un elenco completo dei processi in Solaris, senza linee troncate? Ho provato il comando ps, con i seguenti argomenti:

 -f Genera un elenco completo. (Vedi sotto per 
 Significato delle colonne in un elenco completo - 
 Ing.) 
 -l Genera un elenco lungo. (Vedi sotto.)

Quindi, entrambi sembrano fare ciò che voglio, tuttavia, più in basso nella pagina man di ps, trovo questo:

 
 args Il comando con tutti i suoi argomenti come stringa 
. L'implementazione può troncare 
 Questo valore sulla larghezza del campo; dipende 
 dall'implementazione se si verifica un ulteriore 
 ulteriore troncamento. Non è specificato 
 Se la stringa 
 Rappresentata è una versione dell'elenco degli argomenti 
 Quando è stata passata al comando 
 Quando è stata avviata o è una versione di gli argomenti 
 in quanto potrebbero essere stati modificati 
 dall'applicazione. Le applicazioni non possono 
 Dipendere dalla possibilità di modificare il loro elenco di argomenti 
 E che tale modifica - 
 Si rifletta nell'output di ps. 
 L'implementazione di Solaris limita il 
 stringa a 80 byte; la stringa è la versione 
 dell'elenco di argomenti in quanto è stata passata al comando 
 all'avvio. 

Il che sostanzialmente dice che l'output verrà troncato e non c'è nulla che io possa fare al riguardo. Quindi vengo qui. Sicuramente altre persone hanno riscontrato questo problema e forse hanno anche un modo per aggirarlo. Immagino che ps non possa farlo e quindi ho bisogno di usare altri strumenti per farlo. È preciso?

57
gabe.

potresti provare

pargs <PID>

questo ti dà un elenco di tutti gli argomenti

oppure usa un altro ps. Se eseguito come root (o qualsiasi utente con privilegi sufficienti per quella materia)

/usr/ucb/ps auxww

ti darà tutti gli argomenti. Fa parte di SUNWscpu, "Compatibilità sorgente, (Usr)"

62
Marcel G

Il kernel non è tenuto a tenere traccia degli argomenti della riga di comando. Quando un programma viene avviato tramite la chiamata execve, il kernel deve copiare gli argomenti nella memoria del processo (in modo che siano disponibili come argv in un programma C, ad esempio). Successivamente, il kernel può scartare la memoria utilizzata per memorizzare gli argomenti iniziali della riga di comando. Il processo può sovrascrivere la sua copia degli argomenti. Quindi potrebbe semplicemente non esserci traccia degli argomenti.

Alcune varianti di unix mantengono una copia degli argomenti in qualche forma. Solaris espone alcuni dati in /proc/$pid. A partire da OpenSolaris 2009.06, l'unica traccia degli argomenti è in /proc/$pid/psinfo, dove sono concatenati con spazi in mezzo (quindi non puoi distinguere tra foo "one" "two" e foo "one two") e la stringa risultante viene troncata a 80 byte. Questo campo in /proc/$pid/psinfo è ciò che ps stampa nella colonna args.

A proposito, il -f e -l Le opzioni controllano quali campi vengono stampati, non se i campi vengono troncati a una certa larghezza.

ps -e fornisce l'elenco di tutti i processi in esecuzione. Inoltre c'è questo ps -elf.

2
ari

A seconda del comando ps che uso, io uso

ps -auxw
0
Wes

prstat ti fornirà i processi attualmente in esecuzione insieme ai loro pid e all'utilizzo della CPU.

0
user41052