Linux: Ejecutar comando en segundo plano

En este post veremos distintos métodos para ejecutar comandos en segundo plano.

Ejecutar un comando en segundo plano (background) significa que ya no tendremos que esperar a que se ejecute el comando en su totalidad para ejecutar el siguiente comando.

Linux: Ejecutar comando en segundo plano: ampersand (&)

El primer método para ejecutar un comando en segundo plano es utilizar el ampersand (&)

comando &

Ejemplo:

[root@LINUX1 ~]# sleep 8 &
[1] 1463

Tras ejecutar sleep 8 &, el comando sleep 8, quedará en background.

sleep 8, hace una pausa de 8 segundos.

Si ejecutamos el comando jobs, veremos el comando funcionando en segundo plano:

[root@LINUX1 ~]# jobs
[1]+  Running                 sleep 8 &

También, transcurrida la ejecución del comando, veremos por pantalla un aviso de su finalización.

[root@LINUX1 ~]#
[1]+  Done                    sleep 8

Linux: Ejecutar comando en segundo plano: &, bg y fg

bg -> Trae el proceso a segundo plano.

fg -> Trae el proceso a primer plano.

Con el & ejecutamos el proceso en segundo plano. Con los comandos bg y fg podemos pasar el proceso de segundo plano a primer plano y viceversa.

Ejemplo:

[root@LINUX1 ~]# sleep 30 &
[1] 1481
[root@LINUX1 ~]#
[root@LINUX1 ~]# fg %1
sleep 30

Enviamos comando a segundo plano con ampersand (&) y luego con fg %1 traemos el proceso a primer plano.

Linux: Ejecutar comando en segundo plano: screen

Con el comando screen podemos ejecutar una serie de comandos en segundo plano.

Su funcionamiento es muy sencillo, veamos un ejemplo:

screen

comando1

comando2

comando3

Control+a d

Al pulsar: Control+a d aparecerá por pantalla: "[detached from" y quedaremos desvinculados de "screen", esa sesión quedará en segundo plano y por tanto todos los procesos quedarán funcionando en segundo plano.

Lo ideal seria iniciar la sesión con un nombre, ejemplo:

screen -S sesion1

De esta forma podemos identificar a la sesión por el nombre.

Si por ejemplo ejecutamos:

[root@LINUX1 ~]# screen -ls
There are screens on:
        1436.sesion1    (Attached)
        1410.pts-0.LINUX1       (Detached)
2 Sockets in /run/screen/S-root.

Veremos la sesión de screen a la que estamos conectados con su respectivo nombre.

Para salir de la sesión de screen, ejecutaremos: exit


No hay comentarios:

Publicar un comentario