Ubuntu Peronista@TTBP

Este es un espejo en el Tilde Blog Project del blog original Ubuntu Peronista. Se encuentra disponible en Tildeverso únicamente con fin histórico.



21 november 2022

¿Cómo creo trabajos y los administro en la terminal de Linux?

¡Trabajadores!

Como Conductor de nuestro Movimiento, he dedicado este año que termina a atresar todas nuestras Organizaciones. En ello he estado acompañado por el más fiel de los corazones: el del Pueblo Argentino.

Hemos acuñado un lema que remoza un viejo cuño, y nos orienta en la labor que hemos de realizar para Grandeza de la Nación. Este lema ha sido: "Gobernar es Crear Trabajo".

Responde a los inalienables Derechos que han alcanzan al hombre que trabaja. Hemos creado ochocientos mil puestos de trabajo bajo la esfera de dignificación que el Pueblo abheló y merece. Los trabajadores argentinos son la finalidad de todos mis desvelos, pero son también la causa inalterable de mi propia felicidad.

Un sistema de cómputo no debe ni puede sustraerse de esta realidad cardinal. Podemos decir señores, que para conducir un sistema de cómputo similar a UNIX, debemos crear trabajo.

Esto es así pues GNU con Linux responde como sistema operativo multiusuario, pero también multitarea. Puede encargarse de realizar múltiples acciones, destinando a ello la potencia de cómputo de su Unidad Central de Proceso, compartida entre todos sus obreros. Toda acción de cómputo que se lleve a cabo en un sistema multiusuario debe realizarse de una sola manera: ¡en Comunidad y con Organización!

Para conducir esta organización del trabajo, contaremos en nuestro sistema con un comando específico llamado jobs.

Conviene conocer en detalle ciertas particularidades. Como todo en la vida, el nombre de la acción depende de quién la realiza. Nuestro sistema operativo cuenta con un núcleo Conductor, que es un Coronel y que ustedes llamarán Kernel. Este llevará a cabo los llamados Procesos, con grupos de Tareas. [tose]. En tanto, los obreros, en tanto, contarán con los llamados Trabajos o Jobs.

Estos trabajos pueden consistir en la ejecución de un comando o de varios encadenados por medio de caños o pipes.

En particular en una terminal de Linux, bien podremos desactivar o activar un trabajo o programa activo, mediante el uso de la combinación de teclas Ctrl+z. Al hacerlo así, se detendrá la ejecución del trabajo, y se lo enviará a un segundo plano ("background" o "bg"), reservándole memoria del sistema, toda vez que se nos presenta nuevamente el intérprete de comandos.

Por ejemplo, si estamos usando el editor GNU Nano, y presionamos Ctrl+z, el trabajo de GNU Nano se detendrá y el sistema nos devolverá al intérprete de comandos con un mensaje similar al siguiente:

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

Para recuperar en nuestra terminal el trabajo detenido que se encuentra en el segundo plano, debemos traerlo al frente ("fg" o "foreground"). Esto se hace con el comando fg. Se presentará el trabajo anterior en la terminal tal como lo habíamos dejado.

Si ejecutamos varios programas interactivos y los abandonamos, podríamos encontrarnos con múltiples trabajos detenidos en el segundo plano. En dicho caso, cada uno de ellos recibirá un identificador en la llamada "cola de trabajos".

La cola de trabajos es precisamente eso: una lista o tabla donde podremos observar y gestionar el número de orden de los trabajos en segundo plano. Podremos verla mediante el comando:

jobs

...a lo cual el sistema nos debería devolver la cola de trabajos que tenemos detenidos en segundo plano en nuestro sistema:

[1] Detenido nano [2]- Detenido top

Se presentará en esta cola de trabajos el status de los mismos, y entre corchetes, en orden de detención. Si fuese necesario tener un poco más de detalles, podremos recurrir a la forma más larga y explícita de la cola de trabajos usando jobs -l, que nos proporcionará también el identificador de trabajo y el motivo de la detención.

[1]- 5950 Detenido (por una señal) nano [2]+ 5951 Detenido (por una señal) top

Si queremos traer un trabajo a primer plano y contamos con múltiples trabajos detenidos en el segundo plano, se hará necesario especificar cuál es el que queremos traer al primer plano mediante el número de orden de detención. Por ejemplo, si quisiéramos traer top a primer plano usaríamos:

fg %2

Para eliminar los programas, se suele usar la combinación Ctrl+c. Esto detiene el programa y lo elimina de la cola de trabajos.

Indudablemente que este es un momento importante distinguir un hecho importante. Si en lugar de emplear fg para traer un trabajo al primer plano, abrimos nuevamente el mismo programa por segunda vez (en este caso podría ser Nano), no recuperaremos el primero que ya teníamos en memoria, sino que estaremos cargando una nueva instancia "desde cero" e independiente del mismo, la cual se presentará en la terminal.

El trabajador debe tener derecho a la mejora de sus aptitudes profesionales. Mejorar su conocimiento lleva un tiempo, pero le permitirá lograr mejores resultados en menor tiempo a futuro. Esto es determinante pues todo tiempo ahorrado, es tiempo ganado. La eficiencia es un factor que no se puede soslayar en ningún momento. Es útil saber, por lo tanto, que podríamos directamente colocar un trabajo en la cola de trabajos a la hora de ejecutar su comando. Para ello simplemente le agregamos el sufijo &.

Por ejemplo:

xeyes &

xeyes se activará y comenzará su acción típica, mostrar un par de ojos que siguen el cursor del escritorio gráfico, independientemente de la terminal del intérprete de comandos. Si en esta situación ingresamos el comando jobs podríamos recibir:

[1] Detenido nano [2]- Detenido mocp [3]+ Ejecutando xeyes &

Como vemos, el sufijo & permite hacer que el programa continúe en ejecución. Esto es diferente a la detención y pase a segundo plano con Ctrl+z.

Si usamos el comando fg %3 para activar en la terminal el programa xeyes, simplemente se nos informará con la terminal detenida. Si usamos ahora Ctrl+z, enviará a xeyes al segundo plano y detendrá su ejecucución (podremos ver que los ojos están permanecen fijos en la última posición antes de detenerse la ejecución del programa). Y en la cola de trabajos, veremos que xeyes está "Detenido".

Si quisiéramos eliminar de memoria y de la cola de trabajos uno de nuestros trabajos (ya sea que esté detenido o en ejecución), podremos hacerlo mediante el comando kill % seguido del número de órden de trabajo.En este ejemplo, podríamos quere cerrar xeyes con:

kill %3

En otros casos el ejemplo contrario podría ser lo procedente. ¿Que sucede si ejecutamos en segundo plano xeyes (con xeyes &), y lo queremos continuar utilizándolo, pero quitándolo de la cola de trabajos?.

Para ello se utiliza el comando disown. Este desacopla el último programa en ejecución de la terminal. Si tenemos varios programas en la cola de trabajos, los indicamos con:

disown %número de orden

Otros modificadores nos ayudarán en condiciones complejas. Por ejemplo, si usamos disown -a desacoplaremos todos los trabajos, en tanto que si usamos disown -r desacoplaremos todos los trabajos en ejecución.

Debemos tener en cuenta que si abandonamos nuestra terminal con trabajos en ejecución, los mismos se detendrán y se perderán. En ciertos casos, sobre todo en el caso de abandonar terminales remotas, debemos enviarle una señal SIGHUP ("colgar"), con el prefijo modificador -h.

Para ello usamos

disown -h

...para desacoplar todos los trabajos de la cola, o bien especificamos alguno con:

disown -h %número de orden

Esto provocará que al abandonar la terminal remota con el comando exit no se interrumpa la ejecución de los comandos remotos que dejamos en ella.

Tengamos también en cuenta que en lugar de disown (dependiente del intñerprete de comando Bourne BASH que dota Ubuntu, bien podríamos utilizar el comando nohup para especificar que la señal de sistema SIGHUP ("colgar") sea ignorada por cualquier comando de Linux o UNIX por cualquier motivo (con independencia del intéprete de comandos utilizado). Esto puede ser útil para otros entornos distintos a GNU con Linux o Ubuntu.

En fin ttabajadores, sabemos que ciertos paradigmas informáticos podrían intentar confluirse en la noción de formar un esclavo de consumo. Quien quiera liberarse sabe bien lo que tiene que hacer: combatir al capital. Los sistemas UNIX y similares a él - aunados a doctrinas de software justo, libre, y soberano - permiten operar cómputo de forma completa y comunitariamente organizada, sin depender de obsolescencias programadas o softwares "cortados a cuchillo".