Situación probable: te gusta realizar instalaciones limpias. Los datos los recuperas manualmente y siempre instalas el mismo software tras la instalación del sistema operativo. Tienes un comando largo para instalar todos los paquetes APT uno tras otro. Introduces el comando. Esperas a que termine. Tu equipo no es el más potente del mundo y sufre. ¿Hay una solución para esto? Bueno, el hecho es que sí podemos ejecutar un proceso del terminal en segundo plano y en este artículo os enseñaremos cómo.
La situación anterior era algo que me pasaba a mí cuando usaba Ubuntu. Instalaba mucho software y desinstalaba otro para dejarlo como a mí me gustaba, pero eso no me es necesario en Kubuntu porque tiene casi todo lo que necesito de fábrica. Sea por lo que sea, hay una manera de evitar tener una ventana del terminal abierta que puede molestar o podemos cerrar y detener el proceso por accidente. Esto es algo que no puede pasarnos si lo ejecutamos en segundo plano.
bg pasa un proceso del terminal a un segundo plano
En este artículo os explicamos por qué no podemos copiar y pegar con los atajos de toda la vida en el terminal. Esos atajos se usan para realizar otras acciones, como Ctrl+C para detener un proceso. En otros muchos programas, Ctrl+Z se usa para deshacer el último cambio, pero tampoco funciona en el terminal. Lo que hace en el terminal es pausar un proceso y lo añade a «jobs». El ejemplo más rápido en el que podemos ver cómo funciona es actualizar los paquetes APT (sudo apt update) y presionar Ctrl+Z. Veremos que el terminal pone «[1]+ Detenido», lo que significa que hemos parado el proceso número 1 y lo hemos añadido a la lista de trabajos de ese terminal; si salimos, los trabajos se van con él. Para reiniciarlos usaremos fg para que siga en un primer plano o bg para que siga en un segundo plano. En ambos casos seguiremos viendo el proceso en el terminal y se parará si cerramos la ventana.
Una vez pausado un proceso del terminal, o varios, podemos ver qué tenemos pendiente usando el comando jobs que hemos mencionado anteriormente. Si hay más de un proceso detenido, añadiremos el número a fg o bg para reanudar uno en concreto. La opción bg (background= segundo plano) no nos permite volver a detener el proceso. Si queremos que el proceso se ejecute directamente en un segundo plano, le añadiremos «&» sin las comillas.
disown permite que el trabajo continúe al salir del terminal
Si queremos que un proceso del terminal continúe en segundo plano tras cerrar la ventana, usaremos el comando disown. Para ello, los pasos a seguir serían estos:
- Iniciamos un proceso.
- Lo paramos con Ctrl+Z.
- Escribimos jobs para ver el número del proceso.
- Escribimos el siguiente comando, donde el número de detrás del tanto por cien coincide con el proceso que queremos ejecutar en segundo plano tras salir del terminal:
disown -h %1
- Reiniciamos el proceso con el siguiente comando (usando el 1 si ese es el proceso que queremos reiniciar):
bg 1
- Si lo deseamos, cerramos el terminal.
La mejor manera de comprobar que esto funciona es descomprimiendo un archivo grande. En la captura anterior podéis ver como he estado descomprimiendo un archivo 7z desde el terminal. Dependiendo del tamaño del archivo, esto puede tardar varios minutos. Si hacéis lo que hemos explicado anteriormente, podéis ir a la ruta donde le hemos indicado que lo descomprima (por defecto /HOME), hacer clic derecho, acceder a sus propiedades y comprobar que el tamaño va aumentando poco a poco. Si no lo hace, cerramos la ventana de propiedades y volvemos a acceder a ella. ¿El problema? No hay manera de saber con precisión cuándo ha terminado un proceso. En el caso de descomprimir un archivo, se supone que ha finalizado cuando ya no sigue aumentando su tamaño. En cualquier caso, sí podemos comprobar que sigue funcionando tras cerrar el terminal.
No quisiera dar por finalizado este artículo sin decir algo: aunque todo lo explicado aquí es seguro, yo recomiendo que primero comprobéis que todo funciona correctamente en vuestro sistema operativo con algo que no sea muy importante. Por ejemplo, descargando un archivo 7z y descomprimiéndolo. Si veis que todo funciona como hemos explicado en este post, adelante con todo lo demás. ¿Te será útil poder ejecutar procesos del terminal en segundo plano?