gestión de procesos
DESCRIPTION
Realizado por: Kepa Bengoetxea [email protected]. Gestión de Procesos. 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) - PowerPoint PPT PresentationTRANSCRIPT
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
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”
Mientras tanto el padre esta esperando a que el hijo finalice (foreground)
fork()
Bash$ ls
exec(ls)
exit()
wait()
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)
│ │ ─yes(5823)
│ ─bash(5802)
│ ─gnome-pty-helpe(5771)
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.
killall
A diferencia de kill , killall permite mandar una señal al proceso por nombre.
Envia la señal -TERM al proceso con el nombre especificado. NOTA: Por “default” la señal que toma kill y killall es -TERM .
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 = Process Id e: USER = User Name h: PR = Priority w: S = Process Status k: %CPU = CPU usage * N: %MEM = 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 TIME CMD
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 - pts/1 00:00:03 yes
0 R 500 9863 9841 0 76 0 - 597 - pts/1 00:00:00 ps
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