¡Hola!
La mayoría de servidores en el mundo GNU/Linux, carecen de entorno gráfico por un tema de optimización de recursos de hardware y por orgullo del administrador del mismo xD (seamos sinceros jajaj). Es por éste motivo que conocer y saber controlar los procesos de nuestra consola/terminal es de suma importancia y básico, dado que así podemos ser más eficientes para trabajar en nuestros servidores. En muchas ocasiones se nos ha dado la situación que ejecutamos una línea de comando y vemos que se tardará mucho… (por ejemplo, un find), pero queremos seguir usando la consola (y no queremos abrir otra terminal con CTRL+ALT+Fx).
& (Ampersand)
Éste caracter especial nos sirve para ejecutar un trabajo o proceso en segundo plano. Así pues, hay una línea de comando que sé que se tardará mucho tiempo y yo quiero dejarlo en segundo plano porque quiero trabajar en otra cosa, puedo hacer esto:
/home/usuario/mi-script-tarda-mucho.sh &
Una vez hecho esto, la consola nos retornará un correlativo de procesos en segundo plano (para el ejemplo de abajo es el 1) y su respectivo identificador de proceso (PID), el cual lo podemos encontrar en ese momento con ps aux | grep «PID». Ver el siguiente ejemplo:
CTRL+C
En el ejemplo anterior, si no le pongo el Ampersand al final, el proceso se estará ejecutando y no me dejará hacer nada hasta que termine; pero si por alguna razón necesitamos Cancelarlo, siempre tenemos a nuestro amigo CTRL+C y así nos olvidamos de éste proceso. La consola normalmente nos mostrará en pantalla ˄C
por cierto, hay quienes llaman a ˄ como gatito, volcancito, elevado a, entre otros. Si conocen el nombre verdadero, me lo hacen saber jajajajjj 😀 .
CTRL+Z
También llamado SIGSTOP, nos sirve para suspender un proceso que tengamos ejecutando en primer plano; con esto quiero decir que se pone en algo así como «Pausado» (el nombre usado por bash es «Detenido»); por tanto, se puede decir que se encuentra en espera, se nos muestra ˄Z y, en la siguiente línea, nos da el correlativo del proceso en cuestión, el estado (en éste caso DETENIDO) y la línea de comando ejecutada.
Y aquí viene lo interesante…
Comando fg
El comando fg nos permite mover un proceso o trabajo que está en segundo plano a primer plano (o sea, a nuestra consola); así, tomando en cuenta la imagen anterior como ejemplo, usamos el correlativo del proceso que se nos mostró (1) para poder enviarlo nuevamente a primer plano y que continúe ejecutándose el proceso detenido.
Comando bg
El comando bg nos sirve para mover un proceso o trabajo que está en primer plano DETENIDO para que continué ejecutándose en segundo plano. Por ejemplo, ver la siguiente imagen:
La primera línea, ejecuta el proceso que se tardará mucho tiempo… como no le puse el ampersand al final (digamos, no pensé que se tardaría tanto y necesito trabajar en otra cosa…), lo detengo con CTRL+Z y, con el correlativo que me dio, lo muevo a segundo plano con bg. Ahora nos muestra el correlativo del proceso y la línea de comando con el ampersand al final, dando a entender que se está ejecutando.
Comando jobs
Con éste comando, podemos ver todos los procesos en segundo plano en ejecución y los detenidos. Les pongo el siguiente ejemplo:
- El signo menos (-) significa que esta o estuvo suspendido.
- El signo más (+) significa que esta o estuvo ejecutándose.
Ojo que no he mencionado el comando ps, kill, etc. porque me iba a enfocar en el control de los procesos para el mejor uso de la consola. Si veo necesario, en otra entrada mencionaré los otros comandos faltantes.
Bien, creo que eso sería todo. Cualquier duda o comentario es bienvenido.
¡Saludos!