EJEMPLO DE MANIPULACIÓN DE TAREAS
Para el ejemplo se supone que se está frente a un equipo con Linux ya instalado y se necesita activar una terminal como se explicó al final del capítulo de instalación. Si se ha entrado como root aparecerá el símbolo # y si se ha hecho como un usuario normal aparecerá $
Se supone que se quiere ejecutar el programa gedit que es un editor de texto. Para ello se llama el programa cuyo nombre es gedit, así:
# gedit& [1] 1034 #
L
Obsérvese que el comando de gedit tiene el carácter & al finalA continuación el sistema muestra los datos [1] 1034. Ellos indican que el proceso ha pasado a ser ejecutado en background liberando la terminal, lo cual se nota debido a que el prompt # vuelve a aparecer dejando correr otros comandos en esta pantalla.
Los números [1] y 1034 significan que el trabajo o proceso (job) tendrá el número 1 dentro de la lista de jobs o trabajos en background y 1034 dentro de la lista de todos los procesos en ejecución. Ese número puede ser diferente en su equipo y depende del momento pues es asignado por el sistema.
Si el programa se llama en foreground, la terminal quedará amarrada al programa. Al dar el comando sin el carácter &, el proceso se ejecuta en foreground.
# gedit
En este caso el prompt de unix # no vuelve a salir en la pantalla. Lo cual significa que en ella no será posible ejecutar otro comando mientras no termine la tarea. Algunos comandos y notaciones referentes a los procesos, de gran utilidad son
los siguientes:
• & carácter para enviar un proceso a background • ^Z para terminar un proceso en foreground • ^z :para terminar un proceso en foreground
• jobs: para que el sistema liste los jobs que está corriendo en background
• fg %n comando para enviar a foreground un proceso en background cuyo número de job es n
• kill %n para "matar", perdón por la palabra pero ese es el macabro léxico de Unix y Linux, para determinar que el job número n debe ser sacado de proceso
Existe un programa llamado xeyes que a veces viene en los sistemas Linux. Sin embargo, en caso de no existir se puede encontrar en Recursos para copiarlo en el sistema. Para mayor fidelidad, se puede copiar como usuario root en /usr/X11R6/bin/ que es su lugar de residencia estándar pero puede copiarse en cualquier parte.
Ese programa proyecta unos ojos que se mueven con el ratón. Para ejecutarlo dándole colores:
#xeyes -center red
y aparecerán un par de ojos rojos que al mover el ratón se mueven ellos también.
Comprobar cómo la terminal queda presa por la tarea (o proceso) y que en ella no se puede teclear otro comando. ¿Por qué? Porque se ejecutó en foreground. La manera de liberarla es matando la tarea usando el teclado oprimiendo simultáneamente las teclas.
De nuevo ejecutar el comando:
#xeyes -center red
Pero en esta ocasión no usar Ctrl C sino Ctrl Z y observar que el proceso se detiene pero sigue ahí en la pantalla, sólo que ya no se mueve con el ratón y la terminal se libera dando un mensaje como:
[1]+ Stopped xeyes -center red
Ese proceso se puede volver a traer corriendo de dos formas, en background o en foreground.
El primero corre independiente de la terminal, es decir, que la terminal queda libre, como ya se explicó, y el segundo deja la terminal atrapada.
Para reactivarla en foreground teclear en la misma terminal que se usó para ejecutarlo:
#fg
Y, sale el mensaje:
xeyes -center red
Se observará que vuelve a estar activo (mueva el ratón y observe) y la terminal queda atrapada.
Crl Z de nuevo y el proceso se detiene pero sigue en la pantalla. Ahora se pone en background:
#bg
[1]+ xeyes -center red
Entonces, vuelve a quedar activo y la terminal liberada. Está en background. Para pararlo, seleccionar la x extrema del gráfico lo cual equivale a matarlo. Si se quisiera desde un principio que corriera en background usar & después del comando, pero cambiar de color:
#xeyes -center blue &
Matar la tarea con Ctrl C
Ahora, abrir dos terminales y en la primera ejecutar:
#xeyes -center red & [1] 4025
Y, en la otra:
#xeyes -center blue & [1] 4028
Los números que aparecen son los de cada tarea.
Se verán dos ojos rojos y dos ojos azules ejecutándose en background es decir que las terminales quedan liberadas.
# jobs -l
[1]+ 4025 Running xeyes -center red & #jobs -l
[1]+ 4028 Running xeyes -center blue &
Aparece cada job con el número de la tarea asignada por el sistema.
Para actuar sobre esas tareas o procesos, por ejemplo, para pararlos o ejecutarlos existen unas señales que se le envían a las tareas con el comando kill.
Si queremos detener la tarea de los ojos azules que es la 4028:
kill -s SIGSTOP 4028
#kill 4028 Mata el proceso.
Se recuerda que si se desea ver la ayuda para manejar un comando se usa el comando man.
Por ejemplo:
#man kill
Este muestra la ayuda del comando kill y así para todos los comandos.
Este ejercicio enseñó el manejo de los procesos simultáneos y las condiciones de background y foreground usando un ejemplo atractivo y sencillo como es el de xeyes. Pero el tema es tan serio que se puede necesitar para la ejecución de tareas estratégicas dentro de las empresas.