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)

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
Certificat LPIC-1
Examen: 101 (torneu a la resta de temes)
Fitxers: LPI103.5_CrearmonitoritzarMatarProcessos.pdf (LPI103.5_CrearmonitoritzarMatarProcessos.odp) , UD_8_7_admin_processos.pdf
Objectius: http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives
Dipòsit SVN: https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_101/103.5
Usuari: anonymous
Paraula de pas: qualsevol paraula de pas

Definició de procés

IMPORTANT: En informàtica un procés és una instància d'una aplicació que esta essent executada per una computadora.

Una aplicació o programa és solament una col·leció passiva d'instruccions que no esdevenen un procés fins que el programa és executat.

Un procés és el conjunt de recursos necessari per executar un programa. Des del punt de vista del sistema operatiu és un recurs més que s'ha de gestionar.

La CPU s'encarrega d'executar els processos, el que interpreta els processos es el sistema operatiu.

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.
  • És possible llançar vàries instàncies d’un mateix programa simultàniament.

Elements d'un procés

Contenen informació sobre els programes que s'executen al sistema operatiu.

Els elements més importants són:

  • L'identificador del procés (és el més important, PID).
  • L'identificador del procés pare (tots els processos depenen del procés pare, PPID).
  • Estat del procés (En execució: està sent utilitzat en la CPU o en espera: està a la RAM).
  • Prioritat del procés (Més important o menys important).
  • Senyals pendents de ser processades (Es la forma que tenim de comunicar-nos amb els processos).

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

Es l'encarregat de gestionar els processos del nucli (kernel), disposa d'una taula de processos, cada procés s'identifica per un número únic (PID).

Hi ha 2 maneres d'executar aplicacions:

  • fork: Permet que un procés crei un altre procés, el nou procés s'anomena procés fill.
  • exec: Substitueix l'aplicació que tens per la que dius que vols executar.

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.
  • 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).
  • 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

Unix/Linux

  • Els processos només es poden executar a partir de processos ja existents.
  • Els processos acabin tenint una jerarquia (relacions pare/fill).
  • La crida de sistema que permet en Unix crear un nou procés és fork (forquilla). Fork crea un procés fill que és una còpia casi exacte del procés pare i que s'executa en paral·lel al procés pare


El nucli del sistema operatiu. scheduler

Es el procés del nucli que gestiona la resta de processos. No es pot visualitzar perquè el seu identificador es 0.

El procés init

Es el procés pare de tota la resta de processos, sempre el tenim. PID 1.

Vegeu l'ordre pstree

Exemple per visualitzar la jerarquia de processos Linux

$ gnome-system-monitor
Monitor jordipujol.png

Estat dels processos

Vegeu l'ordre ps

Manipulació de processos

Acabar (terminar) un procés:

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

  • Ctrl-c: Envia el senyal 2 (SIGINT). La majoria d'aplicacions estan programades per finalitzar l'execució quan reben aquesta senyal. Algunes comandes no ho fan així ho requereixen d'una doble confirmació abans de finalitzar el procés).
  • Ctrl+\: S'envia el senyal 3 (SIGQUIT). També depèn de com estigui programada l'aplicació.
  • Utilitzar kill.
  • L'única forma de finalitzar un procés que s’executa en segon

pla és utilitzar la comanda kill.

Com crear processos

Executar processos en primer terme

Executar processos en segon terme

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

Control de tasques en un interpret d'ordres

Acabar un procés.

Consulteu també l'ordre kill.

Informació sobre processos: ps i pstree

ps

ps (process statuts): Es per veure l'estat dels processos, hi han moltes maneres d'implementar aquesta ordre:

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

Ens mostra els processos que hi han a la terminal:

$ ps
 PID TTY          TIME CMD
1924 pts/0    00:00:00 bash
1978 pts/0    00:00:00 ps
  • PID: Identificador del procés.
  • TTY (terminal associada): on s'ha executat ps (ordre $ tty).
  • TIME: Temps acumulat d'ús de CPU.
  • CMD: la comanda que ha generat el procés.

Ens mostra tots els processos que s'estan executant al sistema:

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   3044  1824 ?        Ss   13:40   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    13:40   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    13:40   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    13:40   0:00 [kworker/0:0]
root         6  0.0  0.0      0     0 ?        S    13:40   0:00 [migration/0]
...
...

Ens mostra el procés que volem:

$ ps aux | grep bash
jordi     1924  0.0  0.1   8332  3876 pts/0    Ss   13:48   0:00 bash
jordi     2008  0.0  0.0   5316   860 pts/0    S+   14:05   0:00 grep --color=auto bash

pstree

[email protected]:~$ pstree -p | head
init(1)-+-NetworkManager(655)-+-dhclient(1196)
       |                     |-{NetworkManager}(663)
       |                     `-{NetworkManager}(1197)
       |-acpid(822)
       |-apache2(1085)-+-apache2(2906)
       |               |-apache2(2907)
       |               |-apache2(2908)
       |               |-apache2(2909)
       |               `-apache2(2910)
       |-atd(836)

El paràmetre -p serveix per a que ens mostri els PID dels processos.

Estat dels processos:

Processosjordipujol.png

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

Prioritat dels processos

La comanda nice et mostra la prioritat que té un procés al sistema.

Pots modificar la prioritat d'un procés amb la comanda renice, els usuaris només poden modificar els processos del 0 al 20, és a dir, els que són propietaris. L'usuari root pot modificar la prioritat de qualsevol procés a qualsevol valor.

Exemples

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

Ordres

ps

top

Es l'aplicació que utilitza més recursos en el moment que l'executem.

$ top
top - 14:44:52 up  1:04,  2 users,  load average: 0.05, 0.06, 0.06
Tasks: 156 total,   1 running, 153 sleeping,   0 stopped,   2 zombie
Cpu(s):  1.3%us,  0.7%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2964752k total,   805712k used,  2159040k free,    66216k buffers
Swap:   914428k total,        0k used,   914428k free,   335124k cached
 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
1041 root      20   0 40784  22m 7544 S    2  0.8   1:06.52 Xorg               
1539 jordi     20   0  170m  42m  20m S    2  1.5   0:44.44 compiz             
1918 jordi     20   0 97.9m  14m  10m S    2  0.5   0:03.03 gnome-terminal     
1635 jordi     20   0 30668  10m 8376 S    0  0.4   0:01.45 unity-window-de    
1645 jordi     20   0  106m  16m  10m S    0  0.6   0:04.00 unity-panel-ser
...
...
  • up: és la quantitat de temps que porta encesa la màquina.
  • users: nombre d'usuaris diferents (inclou un mateix usuari que estigui "logat" en diferents terminals ).
  • load average: Càrrega mitjana del sistema (tots els valors respecte 1).
  • Tasks: estadístiques de les tasques.
  • Cpu(s): estadístiques de la CPU.
  • Mem: estadístiques de la memòria del sistema.
  • Swap: Estadístiques de la memòria swap.

kill

$ ps aux | grep ksnapshot
jordi     2066  0.1  1.1 132552 33432 ?        Sl   14:20   0:01 ksnapshot -caption 'KSnapshot'
jordi     2132  0.0  0.0   5320   864 pts/0    S+   14:32   0:00 grep --color=auto ksnapshot
[email protected]:~$ kill 2066

killall

pidof

L'ordre pidof és un enllaç a killall.

htop

atop

jobs

bg

fg

nohup

Evita que un procés engegat en una terminal especifica s'aturi al tancar la terminal. L'ordre és una ordre built-in de bash.

free

uptime

watch

Variables de shell i d'entorn

$$

$?

$PPID