Manpages

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).
−−sort
X[+|-]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 [AT] fwi.nl). Michael K. Johnson (johnsonm [AT] sunsite.edu) lo ha riscritto per usare il filesystem proc, cambiando un po’ di cose nel processo. Michael Shields (mjshield [AT] nyx.edu) ha aggiunto l’argomento pid. Charles Blake(cblake [AT] 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.