IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Definició de procés

En informàtica un procés és una instància d'una aplicació que esta essent executada per una computadora
  • Característiques
  • Una aplicació o programa és solament una col·lecció passiva d'instruccions que no esdevenen un procés fins que el programa és executat.
  • Una sola aplicació o programa pot arribar a executar múltiples processos al mateix temps
  • Linux és un sistema operatiu multitasca i també multi-proces (suport per a múltiples CPUs) i pot executar diferents processos al mateix temps
  • multitasca: pos executar varies tasques a la vegada. fan un TDM multiplexacio en temps.
  • multiproces: multiples CPU, una part del programa a una CPU i l'altra part a l'altra CPU per adelantar feina.
  • És possible llançar vàries instàncies d’un mateix programa simultàniament, si tens 2 CPU es posible sino no.

Elements d'un procés

  • Identificador del procés
  • Identificador del procés pare (PPID).
  • Prioritat del procés (en el cas que s'utilitzi)
  • Estat del procés: hi han diferents models d'estats.
  • Senyals pendents de ser processades.

L'identificador de procés (PID) i l'identificador de procés pare

Tot procés s’identifica amb un número únic, el PID (Process IDentifier). L'encarregat de gestionar els processos és el nucli del sistema operatiu (kernel) i disposa d'una taula de processos on cada procés es identificat pel seu PID.

Una aplicació no pot crear un procés directament. Es necessari demanar al sistema operatiu que crei el procés i el gestioni. Es disposa de dos crides de sistema per tal de poder crea processos:

fork: permet que un procés crei un nou procés. Aquest nou procés es anomenat procés fill
exec: permet executar una aplicació externa. es tanca la linia de comandes i sobre la nova aplicació.

Tipus de processos

  • Procés fill: Jerarquia de processos. Creats per fork.
  • Procés orfe: el pare ha finalitzat la seva execució abans que el fill. I sen va al proces principal.
  • Procés zombie: Procés que ha acabat però que resta a l'espera d'una resposta del pare.
  • Procés parat: es poden parar processos, pausa (Ctrl+z). es una de les coses que han de fer cas els procés.
  • Procés dimoni (servei): s'executa permanentment i en segon terme. No té interfícies d'usuari associades.

Fils d'execució vs processos

Jerarquia de processos Unix. L’arbre de processos

  • Dos conceptes
  • herència: es una copia del pare.
  • sincronització entre processos pare i fill: IPC

El procés init

És l’arrel de la jerarquia de processos Linux. init, un procés a nivell de sistema que s’engega cada cop que iniciem el sistema. si matem el init matem el sistema. per això existeix la comanda init.

El PID i PPID del procés init és 1, o dit d’una altra manera init és el seu propi pare.


Vegeu l'ordre pstree

Exemple per visualitzar la jerarquia de processos Linux

[email protected]:~$ pstree -p | head

init(1)-+-NetworkManager(1774)-+-dhclient(1946)
       |                      `-{NetworkManager}(1949)
       |-acpid(1976)
       |-atd(1989)
       |-avahi-daemon(1759)---avahi-daemon(1768)
       |-bonobo-activati(4426)-+-{bonobo-activat}(4429)
       |                       `-{bonobo-activat}(4441)
       |-clock-applet(4467)---{clock-applet}(4477)
       |-console-kit-dae(2150)-+-{console-kit-da}(2172)
       |                       |-{console-kit-da}(2186)


modificar procés en modo nena.(entor grafic)

Detener proces Continuar proces Finalitzar proces

Estat dels processos

Vegeu l'ordre ps

Manipulació de processos

Com crear processos

Executar processos en primer terme

jobs veus els treballs que estan ejecutanse.

fg 1 aquell treball que esta aturat es posa en marxa bloquejant la consola. bg 1 aquell treball que esta aturat es posa en marxa en segon pla.

control + \ per aturrar b.

$ sleep 100
^\Salir (`core' generado)



Executar processos en segon terme

El mode per defecte en que s'executa una ordre a la línia d'ordres és en primer pla. Per executar una comanda en segon pla, s'utilitza l'operador &

$ ordre &

Per exemple:

$ sleep 10 &
[1] 3698
$ 
[1]+  Fet                     sleep 10

Substituir un programa en execució per un altre. Comanda exec

Control de tasques en un interpret d'ordres

Acabar un procés.

Hi ha 3 formes d'acabar prematurament un procés que s'està executant en primer pla:

  • Ctrl-c: Mata el procés
  • Ctrl+\: S'envia el senyal 3 (SIGQUIT).
  • Utilitzar kill

Informació sobre processos: ps i pstree

ps

La majoria de sistemes operatius de la família Unix (UNIX-like), l'ordre ps (process status) permet visualitzar els processos que s'estàn executant.

Hi han diferents implementacions de la comanda ps, les quals difereixen sobretot en la forma d'utilitzar les opcions. Podem destacar 3 versions principals:

  1. Opcions UNIX: les opcions han d'estar totes agrupades i han d'estar precedides per un guió (-).
  2. Opcions BSD: poden estar agrupades i no utilitzen mai el guió (-).
  3. Opcions llargues de GNU: van precedides per dos guions (--)


ps sense res:

[email protected]:~$ ps
  PID TTY          TIME CMD
 2069 pts/2    00:00:00 bash
 2885 pts/2    00:00:00 ps


PID identificador del procès TTY es la terminal que estem usan TIME el temps que ha usat la CPU CMD comanda.

prcessos teus

per veure tot usarem la comanda mostra tots els procesos siguin de qui siguin

$ ps aux


per buscar un proces en concret usem la comanda

$ ps aux | grep bash
[email protected]:~$ ps aux | grep bash
risa      1955  0.0  0.1   8656  3440 pts/0    Ss+  09:42   0:00 bash
risa      2011  0.0  0.1   8656  3440 pts/1    Ss+  09:43   0:00 bash
risa      2069  0.0  0.1   8724  3620 pts/2    Ss   09:43   0:00 bash

per veure procesos de un usuari usarem la següent comanda

$ ps aux -u root
[email protected]:~$ ps -u root
 PID TTY          TIME CMD
   1 ?        00:00:00 init
   2 ?        00:00:00 kthreadd
   3 ?        00:00:00 ksoftirqd/0

pstree

Estat dels processos

Senyals

Enviant senyals a processos : kill, killall i top

   * 9.2 kill, killall
         o 9.2.1 xkill
   * 9.3 top
   * 9.4 Alternatives a top
         o 9.4.1 htop
         o 9.4.2 atop


[email protected]:~$ kill -l
1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

Exemple de matar proces amb el kill.

Primer mirem el PID

$ ps aux | grep firefox
risa      2283  6.3  6.3 471668 127892 ?       Sl   09:43   2:54 /usr/lib/firefox-7.0.1/firefox

Un cop tens el PID usem la comanda kill

$ kill  2283

ja esta tancat.

killall es com el kill -9

Prioritat dels processos

-20 a 19 el -20 es mes prioritat i el 19 es menos prioritat.

Exemples

Executar un programa abans de l'execució de cada comanda (execució de l'interpret d'ordres)

Ordres

ps

top

la comanda top te postra els processos ordenats per %CPU

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                       
1676 risa      20   0  293m  91m  23m S    5  4.6   1:23.07 compiz                                        
1033 root      20   0 87468  20m 7424 S    4  1.0   1:38.14 Xorg                                          
1948 risa      20   0  107m  23m  12m S    3  1.2   0:09.79 gnome-terminal                                
1631 risa      20   0  6976 3268  916 S    0  0.2   0:14.23 dbus-daemon                                   
3560 risa      20   0  2820 1168  868 R    0  0.1   0:00.65 top

kill

killall

pidof

htop

atop

jobs

bg

fg

nohup

nice / renice

Aquesta comanda s'usa per conviar la prioritat d'un proces.

free

uptime

Mostra el temps que porta en execució una màquina i els usuaris

$ uptime 
10:48:33 up  1:07,  3 users,  load average: 0.01, 0.16, 0.20

watch

Conky

Instal·lació del conku

$ sudo apt-get install conky

un cop fet això ejecutem el conky (per defecte surt a la esquerra)

Per canviar el lloc on surt editem el seguent arxiu de configuració /etc/conky/conky.conf

Variables de shell i d'entorn

$$

$?

$PPID