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


57

Esiste un modo per generare un elenco completo dei processi in Solaris, senza linee troncate? Ho provato il pscomando, 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 quello che voglio, tuttavia, più in basso nella pagina man di ps, trovo questo:

 
 args Il comando con tutti i suoi argomenti come a
                         corda. L'implementazione potrebbe troncare
                         questo valore alla larghezza del campo; è
                         se dipende dall'implementazione
                         si verifica un ulteriore troncamento. È
                         non specificato se la stringa
                         rappresentato è una versione dell'argomento
                         elenco come è stato passato al comando
                         quando è iniziato, o è una versione di
                         argomenti in quanto potrebbero essere stati modificati
                         dall'applicazione. Le applicazioni non possono
                         dipende dalla possibilità di modificare il proprio
                         elenco di argomenti e con quella modifica-
                         si riflettono nell'output di ps.
                         L'implementazione di Solaris limita il
                         stringa a 80 byte; la stringa è il
                         versione dell'elenco degli argomenti così com'era
                         passato 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?


Stai parlando del pscomando? In tal caso, ti preghiamo di aggiornare la domanda in modo che sia più chiara.
phunehehe,

Sì, scusa ... il mio armeggiamento iniziale era con il comando ps, ho chiarito la domanda.
gabe.

Risposte:


63

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)"


pargsmostra la copia in-process degli argomenti della riga di comando (e facoltativamente l'ambiente). Buono a sapersi, grazie!
Gilles 'SO- smetti di essere malvagio' l'

1
questa intera directory / usr / ucb è nuova per me ... Mi piace!
gabe.

3
Su Solaris 11, se si utilizzano opzioni senza trattino (come "/ usr / bin / ps auxwww") verranno trattate come opzioni di stile UCB e l'output mostrerà righe extra lunghe, anche quando NON si esegue come root. Questo non è ben pubblicizzato. Vedi anche: superuser.com/questions/148271/ps-command-in-solaris
Chris Quenelle

14

Il kernel non è tenuto a tenere traccia degli argomenti della riga di comando. Quando un programma viene avviato tramite la execvechiamata, il kernel deve copiare gli argomenti nella memoria del processo (in modo che siano disponibili come argvin 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, si trova l'unica traccia degli argomenti /proc/$pid/psinfo, in cui sono concatenati con spazi tra (quindi non è possibile distinguere tra foo "one" "two"e foo "one two") e la stringa risultante viene troncata a 80 byte. Questo campo /proc/$pid/psinfoè ciò che viene psstampato nella argscolonna.

A proposito, le opzioni -fe -lcontrollano quali campi vengono stampati, non se i campi vengono troncati a una certa larghezza.


Anche questa è stata una buona risposta, molto istruttiva. Il comando pargs ha soddisfatto meglio le mie necessità, che è l'unica ragione per cui ho selezionato quella risposta su questa.
gabe.

6
Quindi, ancora una volta ci sediamo qui nel 2013 e ancora tronciamo le stringhe a 80 byte perché negli anni '70 avevamo terminali a 80 caratteri e "alcuni" programmi devono ancora capire il fatto che la vita è andata avanti. E ci piace, lo lodiamo come "compatibilità"! Dovremmo vergognarci di noi stessi ...
Manjabes,

1
@Manjabes haha! Le persone che scelgono di continuare a usare Solaris non dovrebbero lamentarsi del fatto che il sistema fa le cose alla vecchia maniera ;-) Solaris è intenzionalmente lento a cambiare, per essere più retrocompatibile con i programmi precedenti che prevedono determinati comportamenti. Se si desidera un sistema operativo con un elenco ps più lungo e funzionalità più fantasiose nei programmi di utilità, è possibile utilizzare invece Linux.
JohnGH,

2

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


2
Anche usando l'argomento -l tronca ancora le informazioni della riga di comando
Lars Nordin

1
Non una risposta alla domanda.
Konrad Gajewski,

0

A seconda del pscomando che uso, io uso

ps -auxw

1
La versione di ps su Solaris che utilizza argomenti auxw non richiede un '-' Se non sei su Solaris, la tua risposta non è rilevante.
JohnGH,

0

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.