30 novembre 2008

Visualizare i Processi in un Sistema Gnu/Linux

In un sistema UNIX o Linux like, i programmi o comandi(a secondo come vi piace chiamarli)non sono altro che processi del sistema dove ogni piccola utility e stata creata per svolgere un determinato compito.

Ad ogni processo sul sistema viene attribuito un PID(Process ID)univoco. Sulla mia Ubuntu il pid del programma che analizzeremo(nelle opzioni dell'utente user) e il 13685 che corrisponde a ps, (status process).

Quando lanciamo da utenti normali il comando ps di solito abbiamo un output come il seguente che ci indica il pid del processo nel terminale, il tempo che il processo impegna, la cpu e il comando eseguito.

esempio:


archie@blackdog:~$ ps
PID TTY TIME CMD
9635 PTS/0 00:00:00 bash
13685 PTS/0 00:00:00 ps

questo e quello che appare a video dando il comando ps da utente normale, vale a dire l'utente archie. Se usiamo il suddetto comando da root l'output a video invece sarà molto più esteso, e se il sistema su cui e stato eseguito ps e un sistema con molti utenti la schermata sarà alquanto lunga. Se restate sconcertati nel vedere tanto testo nella vostra shell, dovreste lanciare l'utility ps, con una pipe che filtra il tutto tramite l'utility more esempio:

archie@blackdog:~$ ps | more

oppure se volete avere la comodità di leggervi l'output con calma, dovreste reindirizzare il tutto in un file di testo come da esempio:

archie@blackdog:~$ ps > /home/archie/file_output.txt


Adesso passiamo alle opzioni più utili di ps.
Una delle opzioni più usate di ps, e "ps u"(status process dell'utente), che ci informa oltre ai soliti valori di sistema anche i processi dell'utente ecco un esempio:

archie@blackdog:~$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
archie 5771 0.0 0.4 5608 3212 pts/0 Ss 14:45 0:00 bash
archie 5810 0.0 0.1 2644 1004 pts/0 R+ 15:08 0:00 ps u

mentre una opzione più ricca di contenuto(ma che non ci dice chi a avviato i processi) e simile al comando ls dato dall'onnipotente root e questo esempio:

archie@blackdog:~$ ps a
PID TTY STAT TIME COMMAND
4163 tty4 Ss+ 0:00 /sbin/getty 38400 tty4
4164 tty5 Ss+ 0:00 /sbin/getty 38400 tty5
4168 tty2 Ss+ 0:00 /sbin/getty 38400 tty2
4170 tty3 Ss+ 0:00 /sbin/getty 38400 tty3
4173 tty6 Ss+ 0:00 /sbin/getty 38400 tty6
4971 tty7 Ss+ 0:21 /usr/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xaut
5196 tty1 Ss+ 0:00 /sbin/getty 38400 tty1
5771 pts/0 Ss 0:00 bash
5814 pts/0 R+ 0:00 ps a

per capire chi ha avviato i processi dovremmo usare il flag "au" o "ua", e la stessa cosa cambia solo l' incolonnamento dell'output. Ecco l'esempio:


archie@Blackdog:~$ ps au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 4163 0.0 0.0 1716 508 tty4 Ss+ 14:05 0:00 /sbin/getty 38400 tty4
root 4164 0.0 0.0 1716 512 tty5 Ss+ 14:05 0:00 /sbin/getty 38400 tty5
root 4168 0.0 0.0 1716 508 tty2 Ss+ 14:05 0:00 /sbin/getty 38400 tty2
root 4170 0.0 0.0 1716 508 tty3 Ss+ 14:05 0:00 /sbin/getty 38400 tty3
root 4173 0.0 0.0 1716 512 tty6 Ss+ 14:05 0:00 /sbin/getty 38400 tty6
root 4971 0.4 2.9 24848 18820 tty7 Ss+ 14:05 0:38 /usr/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nol
root 5196 0.0 0.0 1716 508 tty1 Ss+ 14:05 0:00 /sbin/getty 38400 tty1
archie 5771 0.0 0.4 5608 3012 pts/0 Ss 14:46 0:00 bash
archie 5818 0.0 0.1 2644 1004 pts/0 R+ 16:21 0:00 ps au

Le seguenti opzioni invece per motivi di output molto ma molto lunghi(almeno per quanto riguarda questa guida), il consiglio e di usarli nel modo menzionato sopra, con delle utility come more o less, oppure tramite re indirizzamento dell'output in un file di testo.
Le seguenti restanti flag per ps sono queste:

$ ps ax

$ ps aux

$ ps l

$ ps le

ora anche se abbiamo visto le opzioni più importanti e comuni di ps, vi invito a approfondire l' elenco(lungo parecchie schermate) completo dei restanti flag da usare. Quindi non resta che digitare nella vostra shell $man ps.


Nessun commento: