Publicado el 15 de Febrero del 2019
751 visualizaciones desde el 15 de Febrero del 2019
267,2 KB
31 paginas
Creado hace 14a (13/07/2010)
UNIDAD DIDACTICA 7
GESTIÓN DE PROCESOS
Eduard Lara
1
1. GESTIÓN DE PROCESOS.
INTRODUCCIÓN
Cada programa que se ejecuta es un proceso con
recursos asignados y gestionado por el kernel.
La gestión de procesos comprende la monitorización,
detención y cambio de prioridad de los procesos
Generalmente los procesos son gestionados
automáticamente por el kernel del S.O. (son creados,
ejecutados y detenidos sin la intervención del usuario).
Algunas veces los procesos se detendrán por razones
desconocidas y será necesario reiniciar el proceso.
Otras veces algún proceso se ejecutará
descontroladamente malgastando los recursos del
sistema, entonces será necesaria una intervención manual
del administrador para detener el proceso.
2
1. PARÁMETROS DE UN PROCESO
PROCESS ID (PID): Cada proceso tiene un número
asociado que se le asigna cuando es creado. Los PIDs son
números enteros únicos para todos los procesos sistema.
USER ID & GROUP ID: Cada proceso tiene que tener
asociado unos privilegios que limiten el acceso al sistema
de ficheros. Estos privilegios quedan determinados por el
user ID y group ID del usuario que creo el proceso.
PARENT PROCESS: Todo proceso es creado por otro
proceso, el proceso padre (parentprocess). El primer
proceso iniciado por el kernel cuando el sistema arranca
es el programa init. Este proceso tiene el PID 1 y es el
padre de todos los procesos del sistema.
3
1. PARÁMETROS DE UN PROCESO
PARENT PROCESS ID: El PID del proceso que inicio el
proceso hijo.
ENVIROMENT: Cada proceso mantiene una lista de
variables y sus correspondientes valores. El conjunto de
estas variables recibe el nombre de process enviroment.
Normalmente el entorno de un proceso hijo se hereda del
proceso padre a menos de que se indique de otra forma.
CURRENT WORKING DIRECTORY: Cada proceso tiene
asociado un directorio por defecto, donde el proceso
leerá/escribirá archivos, a menos que se le especifique
explícitamente lo contrario.
NICE NUMBER: Permite al usuario modificar la
prioridad de ejecución de un proceso.
4
2. COMANDOS DE MONITORIZACIÓN
DE PROCESOS: PS, PSTREE Y TOP
ps
Sintaxis: ps [options]
Muestra la lista de procesos del sistema, y algunas de sus características:
hora de inicio, uso de memoria, estado de ejecución, propietario y otros
detalles. Sin opciones lista los procesos creados por el usuario actual y
asociados al terminal de usuario
Opciones:
-a Muestra los procesos creados por cualquier usuario y asociados a un
terminal.
-l Formato largo. Muestra la prioridad, el PID del proceso padre entre
otras informaciones.
-u Formato de usuario. Incluye el usuario propietario del proceso y la hora
de inicio.
-U usr Lista los procesos creados por el usuario “usr”
-x Muestra los procesos que no están asociados a ningún terminal del
usuario. Útil para ver los “demonios” (programas residentes) no iniciados
desde el terminal.
5
2. COMANDOS DE MONITORIZACIÓN
DE PROCESOS: PS, PSTREE Y TOP
La orden ps proporciona una información muy interesante sobre los
procesos que tenemos en ejecución. Podemos saber el pid del proceso
qué programa o originó el proceso, cuanta memoria ocupa, cuanta CPU
consume, cuanto tiempo de ejecución lleva, ...
6
2. COMANDOS DE MONITORIZACIÓN
DE PROCESOS: PS, PSTREE Y TOP
pstree
Sintaxis: pstree [options] [PID | user]
Este comando muestra la jerarquía de los procesos mediante una estructura de árbol.
Si se especifica el PID de un proceso, el árbol empezará desde ese proceso, de lo
contrario el árbol empezará por el proceso init (PID=1) y mostrará todos los procesos
del sistema. Si se especifica un usuario valido se mostrará la jerarquía de todos los
procesos del usuario.
Opciones:
-a Incluye en el árbol de procesos la línea de comandos que se uso para iniciar el
proceso.
-c Deshabilita la unión de procesos hijos con el mismo nombre (replicas de un mismo
proceso).
-G Usa los caracteres de línea para dibujar el árbol. La representación del árbol es
más clara, pero no funciona al redireccionar la salida.
-h Remarca la jerarquía del proceso actual (normalmente el terminal). No funciona al
redireccionar la salida.
-n Por defecto los procesos con mismo padre se ordenan por el nombre. Esta opción
fuerza a ordenar los procesos por su PID.
-p Incluye el PID de los procesos en el árbol.
7
2. COMANDOS DE MONITORIZACIÓN
DE PROCESOS: PS, PSTREE Y TOP
top [options]
top
Sintaxis:
El comando top ofrece una lista de los procesos similar al comando ps, pero
la salida se actualiza continuamente. Es especialmente útil cuando es
necesario observar el estado de uno o más procesos o comprobar los
recursos que consumen.
Opciones:
-i Ignora los procesos inactivos, listando únicamente los que utilizan
recursos del sistema.
-d Especifica el ritmo de actualización de la pantalla en segundos. Es
posible especificar decimales.
Ordenes interactivas:
h Muestra una pantalla de ayuda.
q Sale del programa.
k Kill. Permite detener un proceso.
r Renice. Permite alterar la prioridad de un proceso.
8
3. EJECUCIÓN EN 1º Y 2º PLANO
Un proceso ejecutado en 1º plano, se ejecuta
bloqueando el terminal desde el que se lanzó.
Un proceso se lanza en 1º plano simplemente
introduciendo su nombre en el terminal y pulsando intro.
$firefox
Un proceso ejecutado en 2º plano, se ejecuta sin
bloquear el terminal desde el que se lanzó.
Los programas se pueden iniciarse en 2º plano
añadiendo el carácter & al final del comando.
$firefox &
[1] 1748
El sistema operativo le asigna el trabajo 1
(indicado mediante [1]) y el PID 1748.
9
3. EJECUCIÓN EN 1º Y 2º PLANO
Cuando un proceso se inicia en segundo plano, se crea
un trabajo (job), al cual se le asigna un número entero,
empezando por 1 y numerando secuencialmente.
Cuando un proceso se ejecuta en segundo plano
(background), la única manera de comunicarse con el
proceso es mediante el envio de mensajes (signals).
Se puede mover un programa ejecutado en primer
plano al segundo plano, deteniéndolo escribiendo Ctrl-Z y
después reiniciando el proceso en 2º plano, mediante la
orden bg.
10
3. OPERACIONES CON PROCESOS
EN PRIMER PLANO
Con un proceso en 1º plano podemos realizar dos acciones
desde el terminal que tiene asociado:
Matar el proceso: C-c (Ctrl-c ) se cancela el proceso y
se liberan todos los recursos que tuviera asignados. Esta
acción realmente envía una señal de interrupción al
proceso, indicándole que tiene que detenerse.
Sólo podremos matar procesos sobre los que tengamos
permiso. Si intentamos matar el proceso de otro usuario
el sistema no nos lo permitirá, salvo a root.
Parar el proceso: C-z (Ctrl-z) . En este caso sólo se
detiene la ejecución del proceso, conservando su estado y
sus recursos para poder continuar en el momento que se
dé la orden adecuada.
11
4. ENVIAR MENSAJES A UN
PROCESO: KILL
Cada proceso que se ejecuta en el sistema está alerta
de los mensajes enviados por el kernel o por el usuario.
Las órdenes kill y killall se utilizan para enviar señales
a un proceso.
Estos mensajes (signals) son números enteros
predefinidos y conocidos por los procesos.
Cuando un proceso recibe un mensaje, este realiza una
determinada acción.
Existen 30 diferentes señales definidas en LINUX.
Cada señal tiene un nombre y un entero.
12
4. ENVIAR MENSAJES A UN
PROCESO: KILL
Nombre
Entero
Descripción
SIGHUP
SIGINT
SIGKILL
SIGTERM
SIGCONT
SIGSTOP
1
2
9
15
18
19
Colgar. Esta señal es enviada automáticamente cuando un
modem se desconecta. También se usa por muchos
demonios para forzar la relectura del archivo de
configuración. Por ejemplo, en los procesos init y inetd.
Parar el proceso y desaparece. Esta señal se envía con la
secuencia de teclas Ctrl-C.
Kill. Mata un proceso incondicionalmente e
inmediatamente. Enviar esta señal es un método drástico
de terminar el proceso, ya que no se puede ignorar
Terminar. Mata un proceso de forma controlada.
Continuar. Cuando un proceso detenido recibe esta señal
continúa su ejecución.
Parar, pero preparado para continuar. Esta señal se envía
con la secuencia de teclas Ctrl-Z.
13
4. ORDEN KILL: ENVÍO DE
SEÑALES A PROCESOS
kill
kill [-s sigspec | –sigspec] [pids]
Sintaxis:
El comando kill permite enviar un mensaje arbitrario a un proceso, o
varios, con un PID igual a pids. El parámetro sigspec es el valor
entero de la señal o el nombre de la señal que enviaremos al proceso.
El valor de sigspec se puede especificar en minúsculas o mayúsculas,
pero normalmente se especifica en mayúsculas. Para especificar el
tipo de señal se pueden usar –s sigspec o simplemente –sigspec. Si se
omite sigspec en el comando kill, se toma por defecto el valor
SIGTERM (señal 15, salir de manera correcta).
El valor de pids tendremos que averiguarlos utilizando la orden ps.
Ejemplos:
kill -9 337 kill -KILL 337
14
4. ORDEN KILL: ENVÍO DE
SEÑALES A PROCESOS
Ejemplos kill:
Comandos equivalentes, envían la señal SIGTERM a los procesos con
PID 1000 y 1001. Si estos procesos se están ejecutando de manera
“educada”, recibirán la señal SIGTERM y saldrán de manera correcta
después de limpiar todo lo que tenían abierto.
Kill 1000 1001
Kill –SIGTERM 1000 1001
Kill –s sigterm 1000 1001
En algunos casos los procesos se ejecutan descontroladamente e
ignorarán la señal SIGTERM. Para detener un proceso en estos casos
es necesario usar la señal KILL que termina el proceso
incondicionalmente.
Kill -15 1000 1001
Kill –s 15 1000 1001
kill –s TERM 1000 1001
kill -9 1000 1001 kill –s KILL 1000 1001
15
4. ORDEN KILL: ENVÍO DE
SEÑALES A PROCESOS
killall
killall [-s sigspec | –sigspec
Comentarios de: UD7 - Gestión de Procesos (0)
No hay comentarios