Processos
Processos del SO:
Section titled “Processos del SO:”Definició: Un procés és un programa en execució
Un programa es una col·lecció d’instruccions. Exemple: la comanda ls
(i moltes altres) és un programa executable guardat en algún directori.
Per defecte a /bin/ls
Un procés ocupa espai a la memòria RAM i necessita la CPU per poder funcionar, que s’executin les instruccions que necesita.
Un procés només pot tenir un únic número natural PID (identificador). Això és així en tots els SO.
El primer procés que arrenca a Linux és l’init. Té el PID 1 i és el responsable de l’inici i l’apagada del sistema. Tots els processos tenen un procés pare (PPID, no confoneu amb PID) excepte aquest.
Estats dels processos
Section titled “Estats dels processos”Els més habituals:
running (execució)
waiting o blocked.
En general poden estar en aquest estat perquè esperen una entrada (I/O) de l’usuari, com per exemple que li demani introduïr un text. També poden estar blocked per què l’usuari els ha aturat o minimitzat.
Hi ha altres estats menys comuns, que succeeixen quan falta memòria RAM o CPU: zombie (falta CPU o ha finalitzat però no pot avisar el seu procés pare), swapped (falta memòria RAM i per tant cal enviar-lo a la memòria virtual=swap a Linux).
Els estats dels processos a Linux són (extret de l’ajuda de la comanda ps):
man ps
PROCESS STATE CODES Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process: D uninterruptible sleep (usually IO) I Idle kernel thread R running or runnable (on run queue) S interruptible sleep (waiting for an event to complete) T stopped by job control signal
Si consultem la llista de processos mentre tenim obert el terminal:
man ps a
{% image “linux-ps1.png” %}
La columna STAT, la primera lletra, ens indica l’estat del procés. Tots estan amb S (esperen entrada de l’usuari) excepte l’últim que hi ha una R de running.
Els altres símbols són: + → en primer pla, s → gestiona la sessió. tty → és el terminal
Gestió interactiva (en directe) dels processos.
Section titled “Gestió interactiva (en directe) dels processos.”Comanda per a veure en pantalla, de forma interactiva (cada 5 segons s’actualitza l’estat), tots els processos a la CPU, i la memòria que ocupen.
Ens permet fer moltíssimes coses:
És una variant del top, fa el mateix però de forma una mica més ordenada i atractiva.
{% image “linux-htop.png” %}
system-gnome-monitor
Section titled “system-gnome-monitor”Per facilitar la vida als usuaris no experts en sistemes operatius, algunes distribucions inclouen Administradors de tasques com el del Windows.
A les distribucions basades en Ubuntu i Debian tenim el system-gnome-monitor
Si no hi és, el pots instal·lar amb:
$ sudo apt install gnome-system-monitor
Comandes gestió de processos.
Section titled “Comandes gestió de processos.”Mostra la llista de processos que hi ha.
Combinacions importants:
Section titled “Combinacions importants:”Llista processos en estat d’execució:
ps -ef
Mostra informació d’un procés concret, de tots els terminals i usuaris.
ps -aux | grep firefox
| grep
serveix per filtrar a on apareix la paraula que indiquem (pex firefox).
kill i pkill
Section titled “kill i pkill”Kill normalment serveix per a forçar la finalització de processos.
pkill fa el matex però rep com a paràmetre el nom del procés en comptes de PID (més fàcil de recordar)
kill -15 <PID_PROCES>pkill -15 <NOM_PROCES>
Tot i el seu nom, la comanda kill no només serveix per finalitzar processos. Segons el senyal que li enviem pot fer altres operacions com finalitzar-lo a poc a poc, aturar-lo (19), continuar un procés parat (18) o reiniciar (1)
El comando kill:
Finalizar un proceso SIGTERM (15)Terminar un proceso de forma inmediata SIGKILL (9)Suspender un proceso SIGSTOP (19)Reactivar un proceso SIGCONT (18)Reiniciar un proceso SIGHUP (1)
Execució de processos propis.
Section titled “Execució de processos propis.”En primer pla, posem el nom del programa:
Section titled “En primer pla, posem el nom del programa:”firefox
Veiem que ja no podem fer res al terminal fins que no el tanquem.
Per arrencar en segon pla, posem el nom del programa seguit del caràcter &:
Section titled “Per arrencar en segon pla, posem el nom del programa seguit del caràcter &:”firefox &
Podem seguir usant el terminal si el procés està en segon pla.
Altres programes que poden ser processos són:
- Totes les comandes de Unix: que estan a la carpeta /bin (ls, mkdir, pwd, …)
- gedit
- gnome-calculator
- sleep
- libreoffice
Gestió de processos de la sessió del terminal.
Section titled “Gestió de processos de la sessió del terminal.”Obrir terminal: Ctrl+ Alt + T
No són tant importants, però en ocasions ens poden ajudar:
Serveix per mostrar l’estat dels processos del terminal i el seu PID.
jobs -l
bg i fg
Section titled “bg i fg”bg, envia un procés a segon pla, amb l’id que indica al comanda jobs.
bg %1
fg funciona igual que bg, i envia un procés a primer pla, amb l’id que indica al comanda jobs.
Ctrl+C
Section titled “Ctrl+C”Mata (finalitza) el procés.
Ctrl+Z
Section titled “Ctrl+Z”Para el procés. Llavors es pot tornar a reanudar amb altres comandes.
Exercicis. Bloc 1. Comandes de processos.
Section titled “Exercicis. Bloc 1. Comandes de processos.”Escriu la o les comandes necessàries per cada cas:
Comandaments: bg, fg, jobs, kill, ps, top, &, Ctrl+C, Ctrl+Z
-
Mostra els processos corrent al terminal actual.
-
Mostra els processos corrent al sistema a tots els terminals i usuaris.
-
Mostra els processos corrent al sistema dinàmicament.
-
Llença un programa gràfic (gedit, xlogo, etc.) al foreground del terminal.
-
Mata el procès des del terminal.
-
Llença un programa gràfic (gedit, xlogo, etc.).
-
Llença un programa gràfic (gedit, xlogo, etc.) al background del terminal.
-
Mostra el PID del programa que està corrent al background.
-
Mata el procés utilitzant el seu PID.
-
Llença un programa gràfic (gedit, xlogo, etc.) al background del terminal.
-
Mostra el jobspec del procès que està corrent al background.
-
Fes que el procés vagi al foreground del terminal.
-
Pausa el procés i mira com es comporta la finestra.
-
Fes que el procés torni a còrrer al foreground.
-
Torna a pausar el pocés i fes que torni a córrer al background.
Solucions Exercicis Bloc 1.
Section titled “Solucions Exercicis Bloc 1.”{% sol %}
1 ps2 ps aux3 top4 libreoffice5 Cotrol + c (parar el proceso)6 geany7 Geany & (puedes continuar con la terminal)8 ps9 kill -9 540510 geany &11 Jobs (muestra los procesos que se han ejecutado en el terminal)12 fg %1 (pondremos el numero que esta en el segundo plano Control+z)13 Control + z14 fg %115 bg %1 (Si un programa se para, se puede continuar con el bg%1 para que siga corriendo)
{% endsol %}
Exercicis. Bloc 2. Activitat guiada processos.
Section titled “Exercicis. Bloc 2. Activitat guiada processos.”a. Obre el Firefox
firefox
b. Cerca la comanda per trobar el PID del Firefox.
Aquesta comanda ens llista tots els processos en execució:
ps -e
No ens serveix; usarem aquesta cadena de comandes:
ps -e | grep <nom_programa>
ps -e | grep firefox
{% image “linux-ps-grep.png” %}
Si el tenim arrencat ens apareix l’id 5329 Sinó, no ens apareix cap linia.
c. Finalitza (Mata) el procés.
Opció 1. Ir al terminal donde hemos ejecutado el proceso. Pulsar: Ctrl + C
Opció 2.
Consultem el PID:
ps -e | grep firefox
I ara fem la comanda: kill -9 PID
kill -9 6412
Opció 3.
Tanquem totes les sessions de Firefox alhora. Ens pregunta si estem segurs (y/n).
pkill -i firefox
d. Obre Firefox en segon pla. Tanca’l. Pista: &
firefox &
Fixeu-vos que podem seguir treballant amb el terminal.
e. Executa el procés Sleep 600 i Sleep 1000 en segon pla
sleep 600 &sleep 1000 &
{% image “linux-ps-jobs.png” %}
f. Visualitza els processos en curs
ps -l
g. Visualitza els treballs en curs
jobs -l
h. Porta els 2 processos en primer pla
fg %1fg %2
i. Vuelve a visualizar los trabajos y procesos en curso
ps -e | grep firefox
{% image “linux-ps-segonpla.png” %}
Scripts com a processos
Section titled “Scripts com a processos”Podem crear els nostres propis programes amb la shell Bash de Linux, i executar-los com a processos per tal d’automatitzar tasques.
Començarem creant un script no interactiu, és a dir, que en cap cas demani info a l’usuari, i farà totes les operacions seguides. Això són scripts en batch.
Anem a crear-ne un:
nano hacking.sh
O
gedit hacking.sh
Ara, escriviu o copieu aquest text:
#!/bin/bashfor i in {1..100}do echo "Hacking. $i% completed." sleep 2doneecho "Hacking completed :)"
Per convertir aquest fitxer a progama executable ho fem amb la comanda:
chmod +x hacking.sh
I l’executem amb aquesta:
./infinit.sh
O bé es pot executar directament amb aquesta comanda (si no tenim permisos d’administració):
bash hacking.sh
Ens ha de sortir text com aquest, cada 2 segons (donat que hem posat la instrucció sleep 2)
Hacking. 1% completed.Hacking. 2% completed.
Quina por, no para de sortir text, com l’aturem ????
Al primer terminal Ctrl + Z
o Ctrl + C
Provem d’executar-lo en segon pla:
./hacking.sh &
Així pots seguir usant el terminal.
No para de sortir text cada 2 segons, com aturo això ??
La opció més còmode és:
kill -9 hacking
Activitat guiada 4. Scripts com a processos i estats Entrada/Sortida.
Section titled “Activitat guiada 4. Scripts com a processos i estats Entrada/Sortida.”Pas 0. Obriu 2 terminals, un per executar l’script i l’altre per aplicar el ps per veure l’estat dels perfils.
Pas 1.
nano script.sh
read -p “Introdueix el teu nom: ” nomwhile true; doecho “Hola $nom”done;
Pas 2.
chmod u+x script.sh
Pas 3.
./script.sh
Pas 4. Al segon terminal, aplica
ps j
{% image “linux-ps-j1.png” %}
Pas 5. Al primer terminal
Ctrl + Z
Pas 6. Al segon terminal
ps j
{% image “linux-ps-j2.png” %}
I amb aquests exemples hem pogut analitzar els 3 estats (execució, bloqueig i finalització).
Referències (any 2023-2024)
Section titled “Referències (any 2023-2024)”Presentació Processos Linux Activitats Guiades Processos Feta! Exercicis Pendent!
El contingut d'aquest lloc web té llicència CC BY-NC-ND 4.0.
©2022-2025 xtec.dev