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 |
103.5. Crear, monitoritzar o matar processos | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement: |
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 103.5. Crear, monitoritzar o matar processos |
NOTA: 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·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.
El S.O. és el que els executa.
Linux és un sistema operatiu multitasca i també multi-proces (suport per a múltiples CPUs) i pot executar diferents processos al mateix temps.
La diferència entre multitasca i multi-proces és que multitasca vol dir que pot executar més d'una tasca a la vegada en canvi multi-proces és que pot repartir les tasques entre diferents CPUs.
És possible llançar vàries instàncies d’un mateix programa simultàniament.
Un procés no és res més que una estructura de dades.
Contenen (meta)informació sobre els programes que està executant el sistema operatiu.
Elements (dades) més importants:
Tot procés s’identifica amb un número únic, el PID.
L'encarregat de gestionar els processos és el 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:
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.
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 casiexacte del procés pare i que s'executa en paral·lel al procés pare.
Dos conceptes:
Herència:' El procés hereta totes les propietats del pare (de fet és una còpia exacte del seu pare).
Sincronització entre processos pare i fill: Mecanismes IPC com senyals
El primer procés en executar-se és el nucli (kernel)
És executat pel gestor d'arrancada
El procés del nucli que gestiona tota la resta de processos s'anomena scheduler (planificador de processos). No el podeu visualitzar (té el PID 0)
És el procés pare de tota la resta de processos. PID 1
$ pstree -p |head init(1)-+-/usr/bin/termin(2398)-+-/usr/bin/termin(2402) | |-bash(2403)-+-bash(2457) | | `-pstree(2456) | `-{/usr/bin/termi}(2404) |-NetworkManager(747)-+-dhclient(1439) | |-{NetworkManager}(767) | `-{NetworkManager}(1440) |-accounts-daemon(1198)---{accounts-daemo}(1209) |-acpid(963) |-acroread(2176)---{acroread}(2212)
L'opció -p mostra el PID del procés.
L'ordre head permet visualitzar el principi d'un fitxer o flux de dades.
Una altra manera de mirar un arbre és ps aux --forest
O també amb la comanda:
$ gnome-system-monitor
Opcions del monitor de procressos:
(Fem click amb el botó dret damunt un procés)
Vegeu l'ordre ps
Hi ha dues maneres de crear processos:
Em primer pla (foreground – fg): és el mode per defecte amb el qual executem ordres a l'interpret d'ordres. Les ordres bloquegen l'execució de l'interpret.
$ sleep 10
$ evince fitxerPDF.pdf
$ ooimpress Transpas.odp
Segon pla (background – bg): es pot fer amb el símbol & (o l'ordre bg).
$ sleep 10 & [1] 2593
Hi ha 3 maneres d'acabar prematurament un procés que s'està executant en primer pla:
L'única forma de finalitzar un procés que s’executa en segon pla és utilitzar la comanda kill.
Ordres built-in de bash per gestionar processos
jobs: mostra els processos que s'estan executant a l'interpret.
fg: passa un procés de segon terme a primer terme.
bg: passa un procés de primer terme a segon terme
Aquestes ordres formen part de bash (com p. ex. l'ordre cd).
És una comanda que ens permet veure els processos en execució.
$ ps
Diferents implementacions de l'ordre ps. Difereixen sobretot en la forma d'utilitzar les opcions:
Processos associats a la terminal i l'usuari actuals:
$ ps PID TTY TIME CMD 3910 pts/0 00:00:00 bash 3963 pts/0 00:00:00 ps
Dos processos:
$ id -u 1000
$ echo $EUID 1000
EUID: Effective User Identifier. Variable d'entorn
Unix:
$ ps -e $ ps -ef $ ps -eF $ ps -ely
BSD:
$ ps ax $ ps axu
$ ps aux | head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 3420 1944 ? Ss 08:13 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 08:13 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 08:13 0:01 [ksoftirqd/0] root 6 0.0 0.0 0 0 ? S 08:13 0:00 [migration/0] root 7 0.0 0.0 0 0 ? S 08:13 0:00 [migration/1] root 9 0.0 0.0 0 0 ? S 08:13 0:00 [ksoftirqd/1] root 11 0.0 0.0 0 0 ? S< 08:13 0:00 [cpuset] root 12 0.0 0.0 0 0 ? S< 08:13 0:00 [khelper] root 13 0.0 0.0 0 0 ? S< 08:13 0:00 [netns]
$ ps -aux > psmenysaux Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
L'ordre $ ps -aux normalment dona el mateix resultat si poseu $ ps aux
Excepte l'avís anterior (a l'ordre anterior hem redireccionat la sortida estàndard a un fitxer però l'error estàndard s'ha mostrat per la terminal). Això és així per que realment ps -aux us hauria de mostrar segons l'estàndard POSIX i UNIX, tots els processos amb una terminal associada (-a) per a l'usuari (-u) x. Si no teniu usuari x al sistema l'ordre suposa que realment volieu fer ps aux sense guió.
Paginar:
$ ps aux | more
$ ps aux | less
Buscar un procés:
$ ps ax | grep firefox 2508 ? Sl 6:16 /usr/lib/firefox-11.0/firefox 2590 ? Sl 0:41 /usr/lib/firefox-11.0/plugin-container /usr/lib/adobe-flashplugin/libflashplayer.so -greomni /usr/lib/firefox-11.0/omni.ja 2508 true plugin 4003 pts/0 S+ 0:00 grep --color=auto firefox
Cal ignorar la línia del grep.
També es pot utilitzar la comanda pidof:
$ pidof firefox 3044
Mostrar els processos d'un usuari:
$ ps -u root
Mostrar tots d'un usuari (els executat com root o com un altre usuari però amb SUID)
$ ps -U root -u root
Mostrar el nom d'un procés a partir del seu PID:
$ ps -p 7293 -o comm= bash
Mostrar un procés pel nom de l'ordre
$ ps -C syslogd -o pid PID 5280
Indicar els camps de la sortida
$ ps -eo user,pid,ppid,uid,gid,command,stat,tty,time,%cpu,ni,rss,%mem,share,stime USER PID PPID UID GID COMMAND STAT TT TIME %CPU NI RSS %MEM - STIME root 1 0 0 0 /sbin/init Ss ? 00:00:01 0.0 0 1496 0.1 - 16:38 root 2 0 0 0 [kthreadd] S< ? 00:00:00 0.0 -5 0 0.0 - 16:38 root 3 2 0 0 [migration/0] S< ? 00:00:00 0.0 - 0 0.0 - 16:38 root 4 2 0 0 [ksoftirqd/0] S< ? 00:00:00 0.0 -5 0 0.0 - 16:38
És una comanda que permet veure els processos en execució en mode arbre
* 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
Model de 7 estats (amb paginació):
R “Running”. Procés en curs d’execució (l'està utilitzant la CPU) T “sTopped”. Procés parat (amb les tecles Ctrl + Z per exemple) S “Sleeping”. Procés dormit, en espera del processador. D “Device”. Procés dormit en espera d’un recurs (generalment una entrada/sortida). Els processos en aquest estat no poden interrompre’s. Z “Zombie”. Procés terminat. Seguirà en aquest estat fins que el seu pare ho noti i recuperi el seu codi de retorn.
El segon caràcter del camp STAT està posat a W si el procés s’ha mogut a l’espai de paginació.
Finalment apareix una N o un < com a tercer caràcter de la columna STAT si el procés és respectivament de menor o de major prioritat.
És un mecanisme bàsic de comunicació entre processos.
Mecanisme IPC (Inter-Process Communication) proporcionat pel sistema operatiu.
Hi ha 64 senyals que s'identifiquen per un número o un nom simbòlic (SIG+Nom_del_senyal)
Cada procés pot programar l'acció que durà a terme per a cada senyal, excepte 2 senyals: