PS(1)

NOME
ps - riporta lo stato dei processi

SINTASSI
ps [-] [lujsvmaxScewhrnu] [txx] [O[+|-]k1[[+|-]k2...]] [pids] ci sono anche tre opzioni lunghe: --sortX[+|-]key[,[+|-]key[,...]] --help --version Ulteriori opzioni lunghe stanno per essere introdotte...

DESCRIZIONE
ps mostra un'istantanea dei processi correnti. Se si vuole un'aggiornamento ripetitivo dello stato, si usi top. Questa pagina di manuale documenta la versione di ps basata su /proc, o almeno ci prova.

OPZIONI
Le opzioni sulla riga di comando possono essere precedute opzionalmente da un '-', ma non è necessario. Ci sono inoltre alcune "opzioni lunghe" in stile GNU; si veda più sotto per quelle.
l   formato lungo
u   formato utente: dà il nome dell'utente e l'ora d'inizio
j   formato jobs: pgid sid
s   formato signal
v   formato vm
m   mostra informazioni sulla memoria (assieme con il flag p dà il numero di pagine).
f   le righe di comando sono mostrate in un albero
a   mostra anche i processi degli altri utenti
x   mostra i processi senza terminale di controllo
S   aggiunge il tempo di cpu dei figli e i page fault
c   nome comando dalla task_struct
e   mostra l'ambiente dopo la riga di comando e `+'
w   output largo: non tronca le righe di comando per farle stare una per riga. Per essere precisi, ogni w aggiunto metterà a disposizione un'altra riga di output per ogni processo. Se lo spazio non è necessario non sarà usato. Si può arrivare fino a 100 w.
h   non mostra l'header
r   solo processi running
n   output numerico per USER e WCHAN.

txx solo i processi controllati dalla tty xx; per xx è possibile usare il nome del file di dispositivo in "/dev" o quel nome togliendo tty o cu. Questo è l'euristica inversa che ps usa per mostrare il nome abbreviato del tty nel campo TT, per esempio ps -t1.

O[+|-]k1[,[+|-]k2[,...]]
    Ordina l'elenco dei processi secondo l'ordinamento multilivello specificato dalla sequenza di chiavi corte della sezione CHIAVI DI ORDINAMENTO: k1, k2, ecc. Esiste un ordinamento predefinito specifico per ognuno dei diversi formati di ps. Questi sono modificabili dall'ordinamento specificato dall'utente. Il `+' è quasi opzionale: reitera solamente la direzione predefinita sulla chiave. `-' rovescia la direzione solo nella chiave che precede. Come con t e pid, l'opzione O deve essere l'ultima opzione di una riga di comando con un solo argomento, ma le specifiche in argomenti successivi sono concatenate.

pid Elenca solo i processi specificati; sono separati da virgole. La lista deve essere data immediatamente dopo l'ultima opzione di una riga di comando con un unico argomento, senza introdurre spazi, per esempio ps -j1,4,5. Liste specificate negli argomenti seccessivi sono concatenate, per esempio ps -l 1,2 3,4 5 6 elenca tutti i processi con pid da 1 a 6 in formato lungo. Se sono specificati i pid, questi vengono elencati senza preoccuparsi d'altro. Se è specificato una tty, i processi corrispondenti vengono elencati senza preoccuparsi d'altro. Queste due caratteristiche hanno priorità sui flag 'a' e 'x'.

OPZIONI LUNGHE
Queste opzioni sono procedute da due trattini (hyphen).

--sortX[+|-]key[,[+|-]key[,...]]
    Scegliere una chiave multi-lettera dalla sezione CHIAVI DI ORDINAMENTO. X può essere un buon carattere di separazione. Per essere in stile GNU usare `='. Il `+' è veramente opzionale in quanto la direzione predefinita è quella dell'ordine numerico e lessicografico crescente. Per esempio: ps -jax --sort=uid,-ppid,+pid

--help
    Restituisce un messaggio d'aiuto che riassume l'uso e dà un lista delle chiavi di ordinamento gestite. Tale lista può essere più aggiornata di questa pagina di manuale.

--version
    Mostra la versione.

CHIAVI DI ORDINAMENTO
Si noti che i valori usati nell'ordinamento sono i valori interni che ps usa e non i valori manipolati usati nei formati dei campi d'uscita. Se qualcuno ha voglia di scrivere funzioni di confronto speciali per i valori manipolati, ... ;-) CORTA LUNGA DESCRIZIONE
c       cmd             nome semplice dell'eseguibile
C       cmdline         riga di comando intera
f       flags           flag come nel campo F del formato
lungo
g       pgrp            process group ID
G       tpgid           process group ID della tty
controllante
j       cutime          user time totale
J       cstime          system time totale
k       utime           user time
K       stime           system time
m       min_flt         numero di page fault secondari
M       maj_flt         numero di page fault principali
n       cmin_flt        page fault secondari totali
N       cmaj_flt        page fault principali totali
o       session         session ID
p       pid             process ID
P       ppid            parent process ID
r       rss             dimensione insieme residente
R       resident        pagine residenti
s       size            dimensione memoria in Kbyte
S       share           shared page totali
t       tty             il numero secondario di dispositivo della tty
T       start_time      ora in cui è partito il processo
U       uid             user ID number
u       user            nome utente
v       vsize           dimensione totale della VM in byte
y       priority        priorità di kernel scheduling

DESCRIZIONE DEI CAMPI

PRI Questo è il campo counter della struct task. È in tempo in HZ del possibile timeslice del processo.

NI  Valore dello unix nice standard; un valore positivo indica un tempo di cpu minore.

SIZE
    Dimensione dell'immagine virtuale; dimensione di text+data+stack.

RSS Dimensione dell'insieme residente; Kbyte di programma in memoria.

WCHAN
    Nome della funzione del kernel sulla quale il processo è in sleep, con `sys_' tolto dal nome della funzione. Se non esiste /etc/psdatabase, è solo un numero esadecimale.

STAT
    Informazione sulla stato del processo. Il primo campo è R per runnable, S per sleeping, D per sleep non interrompibile, T per stopped o traced, o Z per un processo zombie. Il secondo campo contiene W se il processo non ha pagine residenti. Il terzo campo è N se il processo ha un valore nice positivo (campo NI).

TT  tty controllante.

PAGEIN
    Numero di page fault principali (page fault che causano la lettura della pagina dal disco, incluse le pagine lette dal buffer della cache).

TRS Dimensione del text residente.

SWAP
    Kbyte (o pagine se è usato -p) sul dispositivo di swap.

SHARE
    Shared memory.

AGGIORNAMENTO
Questo ps basto su proc funziona leggendo i file nel filesystem proc, montato in /proc. Questo ps non ha necessità di essere suid kmem o di avere particolari privilegi per girare. Non date a questo ps nessun permesso particolare

Sarà necessario aggiornare il file /etc/psdatabase lanciando /sbin/psupdate per ottenere informazioni che abbiano senso dal campo WCHAN. Ciò dovrebbe essere fatto ogni volta che si compila un nuovo kernel. Si dovrebbe anche lanciare 'ps' come root ogni volta che i dispositivi tty nella directory "/dev" sono cambiati. Come procps-1.00, ps/top leggono direttamente System.map se è disponibile. Il percorso di ricerca per la kernel address-to-symbol resolution è:
            $PS_SYSTEM_MAP
            /boot/System.map-`uname -r`
            /boot/System.map
            /lib/modules/`uname -r`/System.map
            /etc/psdatabase
            /boot/psdatabase-`uname -r`
            /boot/psdatabase,
            /lib/modules/`uname -r`/psdatabase

NOTE
Il membro used_math della task_struct non è mostrato, in quanto crt0.s verifica se math è presente. Ciò fa sì che il math flag sia impostato per tutti i processi, e quindi è inutile.

I programmi swappati sul disco saranno mostrati senza gli argomenti della riga di comando, e finché non è data l'opzione c, tra parentesi.

%CPU mostra la percentuale cputime/realtime. Non arriverà mai al 100% finché non si è fortunati. È il tempo usato diviso per il tempo che il processo è stato eseguito.

I campi SIZE e RSS non contano le page table e le task_struct di un processo; questi sono almeno 12k di memoria che sono sempre residenti. SIZE è la dimensione virtuale del processo (code+data+stack).

Per effettuare la conversione tra numero del dispositivo e nome ps mantiene un file chiamato "/etc/psdevtab" (aggiornato ogni volta che "/dev" diventa più nuova ed è permesso l'aggiornamento). Se i permessi non permettono l'aggiornamento, ogni chiamata di ps richiede una stat(2) per ogni file nella directory "/dev". Se "/dev" cambia spesso nel proprio sistema di dovrebbe lanciare spesso ps come root. ;-) Potrei aggiungere un file di ripiego sotto $HOME forzato da una richiesta di massa.

AUTORE
ps è stato scritto originariamente da Branko Lankester (lankeste@fwi.uva.nl). Michael K. Johnson (johnsonm@sunsite.unc.edu) lo ha riscritto per usare il filesystem proc, cambiando un po' di cose nel processo. Michael Shields (mjshield@nyx.cs.du.edu) ha aggiunto l'argomento pid. Charles Blake(cblake@bbn.com) ha aggiunto l'ordinamento multilivello, la libreria in stile dirent, il database di conversione tra nome di dispositivo e numero mmaped, la ricerca binaria approssimata direttamente su System.map, ha fatto una pulizia del codice e della documentazione ed è l'attuale manteiner del pacchetto proc-ps.