PDF de programación - TP8 Control de Procesos

Imágen de pdf TP8 Control de Procesos

TP8 Control de Procesosgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 20 de Noviembre del 2017)
514 visualizaciones desde el 20 de Noviembre del 2017
139,2 KB
6 paginas
Creado hace 22a (01/01/2002)
Taller de GNU/Linux 2002− TP8 − hoja 1/6

Universidad Nacional de La Matanza
Universidad Nacional de La Matanza

Taller de GNU/Linux
Ingenier(cid:237)a en InformÆtica-Taller de GNU/Linux

TP N(cid:176) 8
TP N(cid:176) 8

Control de Procesos
Control de Procesos

Objetivos:

(cid:149) Comprender el manejo de procesos en sistemas GNU/Linux.
(cid:149) Aprender la utilización de las herramientas más comunes para el manejo de procesos.

Guía:

Tareas y procesos

Control de Tareas es una utilidad incluida en muchos shells (incluidos Bash y Tcsh), que permite
el control de multitud de comandos o tareas al momento. Antes de seguir, deberemos hablar un
poco sobre los procesos.

Cada vez que se ejecuta un programa, usted lanza lo que se conoce como proceso, que es
simplemente el nombre que se le da a un programa cuando se esta ejecutando. El comando ps
visualiza la lista de procesos que se están ejecutando actualmente, por ejemplo:

/home/larry# ps
PID TTY STAT TIME
S
24
0:03
3
161 3
0:00
R
/home/larry#

COMMAND
(bash)
ps

La columna PID representa el identificador de proceso. La última columna COMMAND, es el
nombre del proceso que se esta ejecutando. Ahora solo estamos viendo los procesos que esta
ejecutando Larry5. Vemos que hay dos procesos, bash (Que es el shell o intérprete de comandos
que usa Larry), y el propio comando ps. El bash ejecutó ps cuando Larry tecleo el comando.
Cuando ps termina de ejecutarse (después de mostrar la tabla de procesos), el control retorna al
proceso bash, que muestra el prompt, indicando que esta listo para recibir otro comando.

Un proceso que esta corriendo se denomina tarea para el shell. Los términos proceso y tarea, son
intercambiables. Sin embargo, se suele denominar "tarea" a un proceso, cuando se usa en
conjunción con control de tareas, que es un rasgo del shell que permite cambiar entre distintas
tareas.

Hay muchos mas procesos aparte de estos corriendo en el sistema, para verlos todos,
teclearemos el comando "ps −aux".

En muchos casos, los usuarios solo ejecutan un trabajo cada vez, que es el último comando que
teclearon desde el shell. Sin embargo, usando el control de tareas, se podrá ejecutar diferentes
tareas al mismo tiempo, cambiando entre cada uno de ellos conforme se necesite. ¿ Cuán
beneficioso puede llegar a ser esto?. Supongamos que estamos con un procesador de textos, y de
repente necesitamos parar y realizar otra tarea. Con el control de tareas se podrá suspender
temporalmente el editor, y volver al shell para realizar cualquier otra tarea, y luego regresar al
editor como si no lo hubiese dejado nunca. Lo siguiente solo es un ejemplo, hay montones de usos

Taller de GNU/Linux 2002− TP8 − hoja 2/6

prácticos del control de tareas.

Primer plano y Segundo plano

Un proceso puede estar en Primer plano o en Segundo plano.
Solo puede haber un proceso en primer plano al mismo tiempo. El proceso que esta en primer
plano, es el que interactúa con el usuario,
recibe entradas de teclado, y envía las salidas al
monitor. (Salvo, por supuesto, que haya redirigido la entrada o la salida. El proceso en segundo
plano, no recibe ninguna señal desde el teclado y por lo general se ejecutan en silencio sin
necesidad de interacción.

Algunos programas necesitan mucho tiempo para terminar, y no hacen nada interesante mientras
tanto. Compilar programas es una de estas tareas, así como comprimir un fichero grande. No tiene
sentido que se siente y se aburra mientras estos procesos terminan. En estos casos es mejor
lanzarlos en segundo plano, para dejar la computadora en condiciones de ejecutar otro programa.

Los procesos se pueden suspender.
Un proceso suspendido es aquel que no se esta ejecutando actualmente, sino que esta
temporalmente parado. Después de suspender una tarea, puede indicar a la misma que continúe, en
primer plano o en segundo, según necesite. Retomar una tarea suspendida no cambia en nada el
estado de la misma, la tarea continuara ejecutándose justo donde se dejo.

Suspender un trabajo no es lo mismo que interrumpirlo.
Cuando usted interrumpe un proceso (generalmente con la pulsación de CTRL−C), el proceso
muere, y deja de estar en memoria y utilizar recursos del ordenador. Una vez eliminado, el proceso
no puede continuar ejecutándose, y deberá ser lanzado otra vez para volver a realizar sus tareas.
También se puede dar el caso de que algunos programas capturan la interrupción, de modo que
pulsando CTRL−C no se para inmediatamente. Esto se hace para permitir al programa realizar
operaciones necesarias de limpieza antes de terminar. De hecho, algunos programas simplemente
no se dejan matar por ninguna interrupción.

Envío a segundo plano y eliminación de procesos

Empecemos con un ejemplo sencillo. El comando yes es un comando aparentemente inútil que
envía una serie interminable de y−es a la salida estándar. (Realmente es muy útil. Si se utiliza un
pipe para unir la salida de yes con otro comando que haga preguntas del tipo si/no, la serie de y−es
confirmará todas las preguntas.) Pruebe con esto:

/home/larry# yes
y
y
y
y

La serie de y−es continuará hasta el infinito, a no ser que usted la elimine, pulsando la tecla de
interrupción, generalmente CTRL−C. También puede deshacerse de esta serie de y−es
redirigiendo la salida estándar de yes hacia /dev/null, que como recordará es una especie de
"agujero negro" o papelera para los datos. Todo lo que usted envíe allí, desaparecerá.

/home/larry# yes > /dev/null

Ahora va mucho mejor, el terminal no se ensucia, pero el prompt de la shell no retorna. Esto es

Taller de GNU/Linux 2002− TP8 − hoja 3/6

porque yes sigue ejecutándose y enviando esos inútiles y−es a /dev/null. Para recuperarlo, pulse la
tecla de interrupción.

Supongamos ahora que queremos dejar que el comando yes siga ejecutándose, y volver al mismo
tiempo a la shell para trabajar en otras cosas. Para ello enviaremos a yes a segundo plano, lo que
nos permitirá ejecutarlo, pero sin necesidad de interacción. Una forma de mandar procesos a
segundo plano es añadiendo un carácter "&" al final de cada comando.

/home/larry# yes > /dev/null &
[1] 164
/home/larry#

Como podrá ver, ha regresado al shell. ¿Pero que es eso de "[1] 164"?, Se esta ejecutando
realmente el comando yes?

"[1]" representa el número de tarea del proceso yes. El shell asigna un número a cada tarea que se
este ejecutando. Como yes es el único comando que se esta ejecutando, se le asigna el número de
tarea 1. El número "164" es el número de identificación del proceso, o PID, que es el número que
el sistema le asigna al proceso. Ambos números pueden usarse para referirse a la tarea como
veremos después.

Ahora usted tiene el proceso yes corriendo en segundo plano, y enviando constantemente la señal
y hacia el dispositivo /dev/null. Para chequear el estado del proceso, utilice el comando interno de
la shell "jobs":

/home/larry# jobs
[1]+ Running yes >/dev/null &
/home/larry#

¡Ahí está!. También puede usar el comando ps, como mostramos antes, para comprobar el estado
de la tarea.

Para eliminar una tarea, utilice el comando "kill".
Este comando toma como argumento un número de tarea o un número de ID de un proceso. Esta
era la tarea 1, así que usando el comando:

/home/larry# kill %1 Matará la tarea.

Cuando se identifica la tarea con el número de tarea, se debe preceder el número con el carácter de
porcentaje (‘%"). Ahora que ya hemos matado la tarea, podemos usar el comando jobs de nuevo
para comprobarlo:

/home/larry# jobs
[1]+ Terminated yes >/dev/null
/home/larry#

La tarea esta, en efecto, muerta, y si usa el comando jobs de nuevo, no mostrará nada. También
podrá matar la tarea usando el número de ID de proceso (PID), el cual se muestra conjuntamente
con el ID de tarea cuando arranca la misma. En nuestro ejemplo el ID de proceso es 164, así que el
comando:

/home/larry# kill 164 es equivalente a /home/larry# kill %1

Taller de GNU/Linux 2002− TP8 − hoja 4/6

Parada y relanzamiento de tareas

Hay otra manera de poner una tarea en segundo plano. Usted puede lanzarlo como un proceso
normal (en primer plano), pararlo, y después relanzarlo en segundo plano. Primero, lance el
proceso yes en primer plano como lo haría normalmente:

/home/larry# yes > /dev/null

De nuevo, dado que yes corre en primer plano, no debe retornar el prompt de la shell. Ahora, en
vez de interrumpir la tarea con CTRL−C, suspenderemos la tarea. El suspender una tarea no la
mata: solamente la detiene temporalmente hasta que se desee retomarla. Para hacerlo debemos
pulsar la tecla de suspender, que suele ser CTRL−Z.

/home/larry# yes > /dev/null
CTRL−Z
[1]+ Stopped yes >/dev/null
/home/larry#

Mientras el proceso esta suspendido, simplemente no se esta ejecutando.
No gasta tiempo de CPU en la tarea. Sin embargo, se puede retomar el proceso de nuevo como si
nada hubiera pasado. Continuará ejecutándose donde se dejo.
Para relanzar la tarea en primer plano, usamos el comando "fg" (del ingles "foreground").

/home/larry# fg
yes >/dev/null

El shell muestra el nombre del comando de nuevo, de forma que tenga conocimiento de que tarea
es la que ha puesto en primer plano. Pare la tarea de nuevo, con CTRL−Z. Esta vez utilice el
comando "bg" para poner la tarea en segundo plano. Esto hará que el comando siga ejecutándose
igual que si lo hubiese hecho desde el principio con "&" como en la sección anterior.

/home/larry# bg
[1]+ yes >/dev/null &
/home/larry#

Y tenemos de nuevo el prompt. El comando "jobs" debería decirnos que "yes" se está ejecutando,
y podemos matar la tarea con "kill" tal y como lo hicimos antes.

¿Cómo podemos parar la tarea de nuevo? Si pulsa CTRL−Z no funcionará, ya que el proceso esta
en segundo plano. La respuesta es poner el proceso en primer plano de nuevo, con el comando fg,
y entonces pararlo. Como puede observar, podrá usar fg tanto con tareas detenidas, como con las
que estén corriendo en segundo plano.

Hay una gran diferencia entre una tarea que se encue
  • Links de descarga
http://lwp-l.com/pdf7594

Comentarios de: TP8 Control de Procesos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad