¿Como creo trabajos y los administro en la terminal de texto-plano?

Texto-plano.xyz es un centro de computo muy pequeno. Dispone de OpenBSD, un sistema operativo multiusuario y multitarea similar a UNIX, derivado de la Distribucion de Software de la Universidad de Berkeley (BSD). Podras usarlo para realizar multiples acciones al unisono, destinando a ello la potencia de computo de la Unidad Central de Proceso remota.

Como esta CPU es compartida entre todos los usuarios de Texto-Plano.xyz, todo computo que se lleve a cabo en el entorno debe realizarse de una sola manera: ¡con responsabilidad Comunitaria y Organizacion!

Este articulo propone un tutorial sencillo con ejemplos para aprender.

Introduccion

Las tareas que se pueden realizar en el sistema se llaman Trabajos (en ingles, jobs).

Estos trabajos pueden consistir en la ejecucion de:

  1. un comando unico
  2. varios comandos unicos encadenados por medio de canos (en ingles, "pipes" ("|")
  3. programas interactivos.

En los sistemas similares a UNIX, podras desactivar o activar un trabajo o programa activo, mediante el uso de la combinacion de teclas Ctrl+z. Al hacerlo asi, se detendra la ejecucion del trabajo en curso en tu terminal, y se lo enviara a un segundo plano ("background" o "bg"), reservandole memoria del sistema. Esto te devolvera nuevamente al interprete de comandos.

¡A practicar!

Ejecutar un programa interactivo

Usaremos para esta practica un programa interactivo, por ejemplo el editor de texto GNU Nano. Para ejecutarlo introduce en la terminal:

nano

El programa interactivo Nano se cargara en la memoria del sistema remoto, y se te presentara en la pantalla de tu terminal (a esta accion se le dice "ejecutar" o "correr" un programa).

Enviar un programa a segundo plano

Podras usar el editor Nano para escribir, ya que tiene un manejo bastante sencillo. Nano emplea atajos de teclas para activar sus diferentes opciones internas. Estas son recordadas en la parte inferior de la pantalla. Por ejemplo, Ctrl+o para guardar y Ctrl+x para salir.

Enviar un trabajo en plena ejecucion a segundo plano

Si estas corriendo un trabajo (en este caso escribir con el editor de textos GNU Nano), y presionas la combinacion de teclas Ctrl+t,Ctrl+z, el trabajo de GNU Nano se suspendera y el sistema te devolvera al interprete de comandos, presentandote un mensaje similar al siguiente:

Use «fg» para volver a nano.
[1]+  Suspendido            nano

Los trabajos suspendidos quedan preservados en la memoria de nuestro sistema remoto, y se dice de ellos que permanecen suspendidos en "segundo plano" (en ingles, "background" o bg).

Podrias realizar ahora otros trabajos independientes en el interprete de comandos.

Traer un trabajo suspendido a primer plano

En el momento que desees recuperar en tu terminal el trabajo previamente suspendido que se encuentra en segundo plano, deberas traerlo al primer plano (fg o "foreground"). Esto se hace con el comando:

fg

Esto recuperara de memoria el trabajo anterior y lo presentara en la terminal tal como lo habias dejado.

Vuelve a presionar Ctrl+t,Ctrl+z para suspender Nano y retornar al interprete de comandos.

Enviar a segundo plano un trabajo

Es util saber que tambien podras colocar un trabajo directamente en la cola de trabajos, incluso antes de que se encuentre en plena ejecucion. Para ello se le agregamos el sufijo &.

Por ejemplo:

top &

Esto iniciara top pero lo hara directamente en segundo plano. Top es una aplicacion de UNIX que es muy utilizada para conocer los trabajos y procesos utilizados en todo el sistema de computo. Podras usarla para ver el uso general de texto-plano.xyz.

Cola de trabajos

Ten presente que si ejecutas varios programas interactivos y los abandonas, podriamos encontrarnos con multiples trabajos suspendidos en segundo plano. En dicho caso, cada uno de ellos recibira un identificador en la llamada "cola de trabajos".

Esta cola de trabajos es precisamente una lista o tabla donde cada usuario podra observar y gestionar el numero de orden de los trabajos que tiene en segundo plano. Podras verla mediante el comando:

jobs

...a lo cual el interprete de comandos presentara en la terminal tu cola de trabajos que tienes en texto-plano.xyz:

[1]  - suspended (signal)  nano
[2]  + suspended (tty output)  top

Se presentara en esta cola de trabajos el status de los mismos, y entre corchetes, su numero de orden de suspension.

Si necesitas contar con mayor detalles, podrias recurrir a la forma mas larga y explicita de la cola de trabajos mediante el comando jobs -l, que te proporcionara tambien el identificador de trabajo y el motivo de la detencion.

[1]  - 21510 suspended (signal)  nano
[2]  + 71490 suspended (tty output)  top

Traer programas a primer plano

Si deseas traer un trabajo a primer plano y cuentas con multiples trabajos suspendidos en el segundo plano, sera necesario que le especifiques al interprete de comandos cual trabajo de la cola de cola de trabajos quieres traer al primer plano mediante el numero de orden de suspension. El comando que deberias utilizar es fg %. Por ejemplo, si quisieramos traer top a primer plano usariamos:

fg %2

Se presentara en tu terminal la aplicacion top, que detalla el uso del sistema de computo, pero tambien un listado que informa quien usa que programa y proceso, y que orden de ejecucion tiene este en texto-plano.xyz. Esta lista se actualiza constantemente cada pocos segundos.

Si bien podriamos cerrar y salir del programa con la tecla q, por ahora, dejaras suspendido top mediante la combinacion Ctrl+z.

Quitar programas de la cola de trabajos

Para quitar los programas de la memoria mientras estan en ejecucion, se suele usar la combinacion Ctrl+c. Normalmente esto detiene el programa, lo elimina de la memoria, y naturalmente lo quita de la cola de trabajos. Ten en cuenta que Ctrl+c funciona en la mayoria de los programas interactivos, pero no en todos ellos.

Si quisieramos eliminar de memoria y de la cola de trabajos uno de nuestros trabajos (ya sea que este detenido o en ejecucion), podremos hacerlo mediante el comando kill % seguido del numero de orden de trabajo. En este ejemplo, podras cerrar top con:

kill %2

El sistema exterminara el trabajo de top y lo reportara en tu terminal.

[2]  + terminated  top

Este es buen momento para distinguir un hecho importante. Si en lugar de emplear fg para traer un trabajo al primer plano, corres nuevamente el mismo trabajo por segunda vez (en este caso podria ser nuevamente Nano), no recuperaras el primero que ya tienes detenido en memoria, sino que procederas a cargar una nueva instancia de Nano "desde cero" e independiente de la anterior, la cual se presentara en la terminal.

Lo practicaras ingresando nuevamente:

nano

Por este motivo, al suspender esta instancia nueva de Nano con Ctrl+z podras encontrar dos Trabajos independientes de nano el pedir la cola de trabajos con el comando jobs:

[1]  - suspended (signal)  nano
[2]  + suspended (signal)  nano

Puede abrir alguna de estas instancias de nano listadas en la cola con fg %1 o fg %2. Puedes abandonarlas como quieras (normalmente utilizando la combinacion Ctrl+x en GNU Nano).

O bien puedes eliminarlas desde el interprete, en este ejemplo con kill %1 y kill %2.