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