Sistemes Operatius

STI-1

GNU/Linux

Pràctica 3: Gestió de Processos en GNU/Linux

11/11/10


DOCUMENTACIÓ

1- Introducció
Linux permet controlar l'entrada i la sortida d'una ordre com hem vist fins ara, i també permet controlar l'execució de l'ordre. Això ens permet deixar que s'executi una ordre en un segon pla (background), mentre que s'executen altres ordres en primer pla (foreground). També podem cancel.lar l'execució d'una ordre abans de la seva total execució (o abans de que comenci a executar-se), o podem aturar l'execució d'una ordre, i continuar posteriorment des del punt on la varem deixar en espera.

La principal utilitat de l'execució de processos en segon pla és la posibilitat d'executar un procés llarg (com per exemple, quna volem imprmir d'un arxiu molt gran) i al mateix temps, poder realitzar altres tasques (com per exemple, compilar un programa en C++, al mateix temps que s'imprimeix l'arxiu de grans dimensions). També és útil per interrompre un procés momentaneament, fer una tasca més urgent, i a continuació, tornar a la primera tasca des del punt on la varem deixar (per exemple, si compilem en un programa en C, i volem controlar com evoluciona la tasca, però en un moment determinat ens veiem obligats a enviar un e-mail urgent a un client, podem aturar la compilació, enviar l'e-mail, i continuar posteriorment la compilació en el punt exacte on ens vam aturar).

2-Visualització de processos en execució
2.1- Ordre ps
Fa un llistat de tots els processos o tasques que està executant un usuari. Si es volen veure els propis processos, i els processos engegats per la resta d'usuaris (i altres informacions), es pot utilitzar la comanda ps aux, que generalment és l'opció més útil. Per exemple:



Les columnes més important són:

USER:
Usuari que ha posat en marxa el procés.
PID:
Número d'intendificació del procés (o tasca) del sistema.
%CPU: % del temps de CPU que està utilitzant el procés.
%MEM:
% de la memòria RAM està utilitzant el procés.
TTY: Número del terminal des del qual va ser engegat el procés (o tasca).
STAT: Estat de la tasca. R = Running S=Sleeping T=Stopped. (Per més informació, aneu a man ps)
TIME: Temps que fa que s'està executant la tasca fina aquest moment.
COMMAND: Ordre  que ha posat en funcionament la tasca (o procés)

2.2-Ordre pstree
Ens mostra l'arbre de processos en segon pla existents, de manera que ens indica la dependència entre processos.Per exemple



En aquest cas, veiem per exemple que el procés kwrapper ha estat iniciat pel procés starkde.

2.3- Ordre top
top:
Ens mostra una llista amb l'activitat de tots els processos del sistema, així com els recursos que utilitzen. Aquesta llista s'actualitza periòdicament (cada segon més o menys). Per sortit heu d'escriure q. Per més informació, veure man top. Exemple:



2.4- Treballant amb l'entorn gràfic: Monitor del sistema
Podeu utilitzar el programa Monitor del sistema que trobareu al menú de programes Sistema --> Administració.



3- Cancel.lació de processos
3.1- Ordre kill
Serveix per cancel.lar qualsevol procés que es trobi en execució. Per cancel.lar un procés farem servir el seu PID. Per exemple:



cancel.lara el procés 4388, que en aquest cas és el procés posat en marxa quan s'ha executat el programa gimp amb l'opció --display :0.0. Si ara tornem a mirar la llista de processos, veurem que el procés 4388 ha desaparegut (i també altres que depenien d'ell).



3.2- Treballant amb l'entorn gràfic: Monitor del sistema
Des del Monitor de sistema 
només hem de seleccionar el procés (en l'exemple el procés 2464) i després fer click a sobre del botó "Finalitza procés". Exemple:



 
3.4- Senyals SIGTERM i SIGKILL
Normalment seria convenient executar kill amb la senyal SIGTERM de la següent manera:

kill  -SIGTERM  4388

En el cas de que SIGTERM no pugues cancel.lar el procés, llavors podem executar:

kill  -SIGKILL  4388

Normalment no és convenient utilitzar la senyal SIGKILL, perquè el procés no es cancel.la correctament, però a vegades no hi ha cap altra opció per cancel.lar un procés.

4- Posada en marxa de processos des de l'interpret d'ordres
Habitualment es posa en marxa cridant directament  el seu executable. Si l'executable és un programa gràfic, llavors s'executa utilitzan el nom de l'executable amb el símbol & al darrere, per independitzar el programa del bash. Si per exemple volem posar en marxa un procés a partir de l'executable firefox escriurem des de l'interpret d'ordres:
jpz@linux~>firefox &
En el cas de que la varible de sistema PATH no tingui el directori de l'executable llavors ho hauriem de posar:
jpz@linux~>/usr/bin/firefox

Si el programa és gràfic i no l'executem amb & al final, llavors per aturar-lo des de la consola s'haurà de premer Ctrl-C.

5- Prioritat de procesos: Ordres  nice i renice
La prioritat d'un procés depen del seu valor NICE. El valor NICE d'un procés està sempre entre el valor -20 (màxima prioritat) i +19 (mínima prioritat). La majoria de procesos tenen un valor nice 0 per defecte, però alguns procesos important del sistema tindran un valor inferior.

Si volem veure el valor NICE dels procesos del sistema hem d'executar  ps axl:



El valor NICE d'un procés es troba a la columna identificada amb el paràmetre NI.

Com usuaris normals, si volem executar un programa amb menys prioritat de la que té per defecte, hem d'executar l'ordre nice. Si volem posar en marxa el programa geany amb un decrement de prioritat igual a 5, hem d'executar:

nice  -n  5  geany &

Com usuaris primaris (root) podem començar un programa amb més prioritat de la que té per defecte. Si volem posar en marxa el programa firefox amb un increment de prioritat igual a 5, hem d'executar:

nice  -n  -5  firefox &

Podem canviar el valor NICE d'un  procés en execució amb l'ordre renice. Si hem executat el programa gimp, i amb l'ordre ps aux comprovem que té un PID igual a 6786, i volem que tingui una prioritat igual a 10  hem d'executar:
renice   10   6786

i si volem que tenga una prioritat igual a -10 hem d'executar:
renice  -10   6786

L'ordre renice com usuari normal només permet disminuir la prioritat però, no augementar-la. L'usuari root si que pot augmentar la prioritat d'un procés amb renice.

PRÀCTIQUES

1- L'interpret d'ordres és un programa anomenat bash. Inicieu una sessió de l'interpret de d'ordres i des del Monitor del sistema troba el seu PID. Comprova ara el seu PID des de l'interpret d'ordres  amb l'ordre  ps aux. Comprova ara el PID del procés bash  executant ps aux  |  grep bash. Quina és  l'avantatge d'aquesta última ordre i quin és el seu incovenient a tenir en compte per no cometre equivocacions?.
2-
Finalitza l'interpret de d'ordres bash des del Monitor del sistema.
3-Torna a obrir l'interpret d'ordres bash, comprova el seu PID, i mata el procés amb l'ordre kill, el seu PID i la senyal adequada.
4-Obre l'editor nano des  de l'interpret d'ordres i  mata'l a partir del seu PID. Utilitza la senyal adequada.
5-Obre la Calculadora del GNOME que trobaràs a Aplicacions  --> Accessoris --> Calculadora. Comprova el nom del procés des de l'interpret d'ordres. Mata el procés amb
l'ordre kill, el seu PID i la senyal adequada.
6-Obre la Calculadora del GNOME que trobaràs a Aplicacions  --> Accessoris --> Calculadora. Comprova el nom del procés des de l'interpret d'ordres. Mata el procés amb l'ordre kill, el seu PID i la senyal SIGKILL.
7- Crida a la calculadora i geany des de l'interpret d'ordes de la manera adequada.
8-Atura la calculadora i geany des de l'interpret d'ordres de la manera adequada.

9-
Com usuari sti1, executa el programa geany i comprova el seu valor NICE per defecte amb l'ordre ps axl. Comprova ara el valor NICE   executant ps axl  |  grep geany. Atura el procés correctament. De quina manera s'ha de fer?.
10- Com usuari sti1, executa el programa geany amb un increment del valor NICE  de 5. Indica quin PID té el proceś i com pots saber-ho sense haver d'executar l'ordre ps.Comprova que has incrementat el valor NICE del procés geany. Quin valor té?. Per què?. Ara té més o menys prioritat?.
11- Com usuari sti1, executa el programa geany amb un increment del valor nice de -5. Ho pots fer?. Per què?. De quina manera t'informa el sistema de que no ho pots fer?.
12-
Com usuari root, executa el programa geany amb un increment del valor nice de -5. Ho pots fer?. Per què?. Comprova el valor NICE de geany. Tanca el procés correctament.
13- Com usuari sti1, executa el programa geany amb un increment del valor NICE  de 5. Intenta canviar en temps d'execució el valor NICE de geany perquè tingui un calor de -15. Ho pot fers?. Per què?.
14- Com usuari sti1, intenta canviar en temps d'execució el valor NICE de geany perquè tingui un calor de 15. Ho pot fers?. Per què?. Comprova que ha canviat el valor NICE del procés.
15-
Com usuari root, intenta canviar en temps d'execució el valor NICE de geany perquè tingui un calor de -15. Ho pot fers?. Per què?. Comprova que ha canviat el valor NICE del procés.
16- Atura el procés geany amb el seu PID i la senyal SIGKILL.
17- S'ha de lliurar un informe de la pràctica en format PDF a l'adreça de correu electrònic cf(arrova)collados.org. El nom del fitxer serà sti1_nom_cognom_pr3_linux.pdf. Nom i cognom són els vostre propis. A l'assumpte del correu heu de posar sti1_nom_cognom_pr3_linux. El vostre nom, cognom i curs també ha de posar-se al principi del treball. L'últim dia per lliurar el treball és el 28-11-2010. Cada dia que passi d'aquesta data, treuré dos punts a la nota del treball.