Gestión de Procesos
Realizado por:
Kepa Bengoetxea
[email protected]
Gestión de Procesos: Foreground y
Background
 Primer plano: comando

Ejm: yes >> /dev/null
 Segundo plano: comando &

Ejm: yes >> /dev/null &
[1] 22300 ([nº_de_tarea] nºPID)
 Pasar a 1º plano: fg %num_de_tarea(Con jobs visualiza el
número tarea de los procesos)
 Pasar a 2º plano: Ctrl+z (manda STOP a la tarea que esta en
primer plano) y bg %nº_de_tarea
 Matar un proceso en primer plano: Ctrl+C ó kill -9 nºPID
Gestión de Procesos: Foreground
Bash$ ls
fork()
exec(ls)
 El bash padre realiza una
llamada a sistema para crear
un proceso hijo (fork()). En
estos momentos tendremos 2
bash (hijo y padre)
El bash hijo realiza una
llamada a sistema exec, que
inicia la ejecución del
comando “ls”
exit()
wait()
Mientras tanto el padre esta
esperando a que el hijo
finalice (foreground)
Gestión de Procesos: PID
Linux dispone de un sistema de ficheros especial llamado proc, que
contiene información interesante acerca de los procesos
Los procesos están organizados en árbol, donde init es el padre de
todos y su PID es 1
Comando “pstree” muestra los procesos en forma de árbol.
Opciones:

-u muestra el nombre de usuario que inicio el proceso

-p pid del proceso
Gestión de Procesos: PID
init(1)─gnome-terminal(5770,kepa)
─bash(5772)
─pstree(5871)
│
│
├
─yes(5821)
│
│
├
─yes(5822)
│
│
│
─bash(5802)
│
─gnome-pty-helpe(5771)
─yes(5823)
Control de Procesos
Comando “ps” lista información de los procesos.
-u alumno01 (muestra los procesos del alumno01)
-t pts/0 (muestra los procesos de la terminal 0)
-p pid (muestra la información del proceso pid)
-a muestra los procesos iniciados por los otros usuarios
-x muestra los procesos con o sin terminal
-f full (formato árbol)
-e todos los procesos
Control de Procesos
 Se pueden mostrar la siguiente información:
UID (Identificador de usuario)
PID (Número Identificador de proceso)
PPID (Número Identificador de proceso padre)
TTY (Terminal asociado al proceso (pts/0;pts/3)
START (Hora de inicio de ejecución del proceso)
TIME (Tiempo acumulado de uso de CPU)
CMD (Nombre de comando)
Control de Procesos
Señal: mensajes que el kernel puede enviar a los procesos para
intercomunicarse con ellos.
- Se identifican por un número
- kill -l ;Nos informa de las señales que se pueden enviar.
- Existen 64 señales diferentes: Las señales de 33 a 64 son señales de
tiempo real
kill: nos permite enviar señales a un proceso.
kill -x PID donde x es un número 1 a 64 o nombre de la señal
Ejm:$ kill -9 8248 ó $ kill -KILL 8248
- Las señales que realmente interesa conocer al usuario son:
Control de Procesos
-KILL:obliga al proceso PID a finalizar.
-HUP: señala al proceso con número pid, que vuelva a leer de
sus archivos de configuración.
-INT: Señala al proceso con número , que será interrumpido .
Es la interrupción de teclado Ctrl+C.
-TERM: Señala al proceso con número pid, que debe de
terminar, a diferencia de -KILL, esta opción da la oportunidad
al proceso terminar correctamente.
-STOP: Señala al proceso con número pid , que pare
momentáneamente (Ctrl+Z)
-CONT: Señala al proceso con número pid, que continúe , este
comando se utiliza para reanudar un proceso que le fue parado
con -STOP.
Control de Procesos
kill: nos permite enviar señales a un proceso. Ejm: kill -x PID
kill -l ;Nos informa de las señales que se pueden enviar.
Si x es -9: obliga al proceso PID a finalizar.
Ejm: $ yes > /dev/null&
[1] 8248
$ kill -9 8248 ó $ kill -KILL 8248
$ ps
PID TTY
TIME CMD
8249 pts/0 00:00:00 ps
[1]+ Killed
yes >/dev/null
Control de Procesos
Comando “top” : muestra los procesos que más %cpu, %mem ...
están utilizando de forma online

Ayuda presionando “h”.

“f” selecciona campos “o” ordena por algún campo:

a: PID

e: USER

h: PR
= Priority

w: S
= Process Status

= Process Id
= User Name
k: %CPU

* N: %MEM

...
= CPU usage
= Memory usage (RES)
Control de Procesos
Comando “nohup” : Siempre que un proceso padre muere antes de
que su hijo muera, este es adoptado por el proceso init. Excepción:
al usar bash, y lanzar un proceso hijo si el bash se cierra o muere
también muere el proceso hijo. Para evitar que el proceso hijo muera
se lanza:
nohup comando
Control de Procesos
Comando “nice”: comando que nos permite cambiar la prioridad de
un proceso.
Sintaxis: nice -n <x> yes > /dev/null&
<x> varía entre -20 y +19, donde -20 es la prioridad más alta (más
tiempo de cpu)
Solo root puede especificar niveles menores que 0.
Para cambiar la prioridad de comando que ya se esta ejecutando:
renice <x> PID
Control de Procesos
Ejm:
$yes > /dev/null &
[1] 9862
$ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY
0 S 500 9841 5770 0 75 0 - 1409 wait pts/1 00:00:00 bash
0 R 500 9862 9841 65 85 0 - 1203 0 R 500 9863 9841 0 76 0 - 597 -
pts/1
pts/1
00:00:03 yes
00:00:00 ps
TIME CMD
Control de Procesos
$ renice +19 9862
9862: prioridad antigua 0, nueva prioridad 19
$ sudo renice -20 9862 (como root, para menores de 0)
9862: prioridad antigua 19, nueva prioridad -20
kill -9 9862
Descargar

06ControlProcesos