I PROCESSI
Cosa sono i processi I sistemi operativi attuali sono MULTITASKING, ovvero sembra che facciano più operazioni nello stesso momento, ma in realtà si spostano velocemente da un programma all'altro per il tempo che la Cpu decide di assegnare ad un'applicazione (timesharing) Linux organizza in processi quei programmi che aspettano a turno la Cpu All'avvio del computer vengono eseguiti degli init scripts, che caricano i processi principali del sistema operativo Alcuni possono essere daemons, ovvero agiscono in background senza avere un'interfaccia grafica
I processi sono organizzati in PID Un processo può lanciare un altro processo, ovvero il processo che lo fa è parent, il processo che viene eseguito è child. I processi vengono organizzati in PID Il kernel tiene traccia dell'utente del processo, della memoria occupata da esso, come per i normali file, della posizione in memoria del processo per ripristinarlo successivamente, ecc...
Il comando ps Comando ps PID TTY TIME CMD 11391 pts/3 00:00:00 bash 11459 pts/3 00:00:00 ps Comando ps x (tutti i processi della sessione utente corrente, per tutti i terminali) In questo caso nella seconda riga è indicato ?, poiché sono processi dell'interfaccia grafica e non eseguiti da terminale 4403 ? Sl 0:17 /usr/lib/i386-linux- gnu/xfce4/panel/wrapper-2.0 /usr/lib/i386-linux- gnu/xfce4/panel/plugins/lib 4413 ? Sl 0:00 /usr/lib/i386-linux- gnu/xfce4/panel/wrapper-1.0 /usr/lib/i386-linux- gnu/xfce4/panel/plugins/lib 4438 ? Sl 0:01 /usr/lib/i386-linux-gnu/xfce4/panel- plugins/xfce4-verve-plugin 52 20971579 xfce4-verve-plugin 4656 ? S 0:00 init --user --startup-event indicator- services-start 4663 ? Sl 0:00 /usr/lib/i386-linux-gnu/indicator- keyboard-service --use-gtk
Gli stati dei processi R → processo in esecuzione S → il processo non è in esecuzione e sta aspettando di entrare in esecuzione, per esempio se l'utente ne fa richiesta D → sta aspettando di ricevere i dati dalla memoria secondaria T → fermato Z → processo figlio che non è stato cancellato quando il padre ha terminato l'esecuzione < → un processo ad alta priorità N → un processo a bassa priorità
ps aux USER User ID. Il proprietario del processo %CPU Percentuale di utilizzo della CPU %MEM Memoria usata in percentuale VSZ Dimensione della memoria virtuale RSS Resident Set Size. L'ammontare di memoria fisica (RAM) che il processo utilizza START Data e ora di quando è iniziato il processo
Comando top Visione in tempo reale dei processi che occupano maggiormente memoria, ordinati in ordine decrescente di occupazione di memoria Alcune informazioni di top (che è come il task manager di windows a linea di comando) Data e ora attuale Up time: in ore da quando è stato acceso il computer Gli utenti collegati Carico medio: i processi che sono in stato runnable e attendono di essere eseguiti dalla CPU
Comando top → continua Numero di processi nei vari stati %us % di CPU utilizza per i processi degli utenti %sy % utilizzata dal kernel 98.3%id % di CPU non utilizzata %wa % di processi che s%wa % di processi che sono in attesa di I/Oono in attesa di I/O Mem → memoria fisica utilizzata Swap → memoria virtuale utilizzata
Gestire i processi Avviare un processo da terminale Avviamo per esempio gedit, un editor di testo Da terminale scriviamo, semplicemente, gedit Possiamo chiudere il processo usando la combinazione di tasti CTRL+C Possiamo avviare anche un processo in background in questo modo Nomeprogramma & Viene aperto il programma, viene mostrato il numero del job (numerazione all'interno di quelli aperti dalla shell corrente) e di seguito il suo PID all'interno di tutti i processi del sistema Vediamo tutti i job eseguiti dal terminale corrente usando il comando jobs
Gestire i processi → continua Possiamo far ritornare in foreground un programma in background, tramite questo comando fg %numerojob Il programma ritorna in foreground ed è possibile terminare tramite CTRL+C Possiamo a volte fermare un programma senza terminarlo Si usa CTRL+Z Il programma può essere anche in questo caso rimesso in foreground tramite fg e in background tramite bg
Terminare un processo → kill Il comando kill segnala al programma che il processo deve essere terminato e pertanto se un programma è ben gestito, salverà i dati non salvati che potrebbero essere persi Senza specificare nulla, il programma viene terminato (la stessa cosa di CTRL+C) Si usa il comando kill seguito dal PID del processo o dal numero del job Si può specificare anche l'operazione che deve essere effettuata sul processo (v. pagina successiva)
Il comando kill INT → come fare CTRL+C, che termina il programma TERM → Il programma viene terminato STOP → il programma è interrotto, ma può essere ripreso CONT → per riprendere un programma stoppato ESEMPIO kill -INT pid_processo Si possono vedere tutti i segnali che possono essere inviati ai processi tramite il comando kill, tramite kill -l
Killall terminare più processi killall nomeprogramma Se abbiamo più processi dello stesso programma possiamo terminare tutti in una volta con questo comando