Ver destacados

Cómo ver y ejecutar procesos en segundo plano Linux

Tutorial para ver, ejecutar y detener procesos en segundo plano dentro de Linux. También podremos pasar procesos de primer a segundo plano.
Escrito por
99.7K Visitas  |  Publicado ene 10 2019 14:10
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


La ejecución de procesos es vital en cualquier sistema operativo usado ya que éstos se encargan de que tanto las aplicaciones como otros elementos del sistema operativo puedan actuar de la forma correcta tanto en compatibilidad como ejecución de sus funciones.

 

Cada sistema operativo puede manejar los procesos de forma diferente, pero en el caso de Linux, por regla general, los procesos están asociado con un terminal. Esto significa que esta debe estar abierta para que el proceso pueda trabajar de forma normal pero esta acción puede dar lugar situaciones como:

 

  • La terminal abierta puede contener muchos datos de salida o mensajes de error / diagnóstico lo cual dificulta no solo la lectura de los datos sino la gestión de ellos.
  • Si llegásemos a cerrar la terminal, el proceso junto con sus procesos secundarios finalizará afectando directamente la tarea a realizar.

 

En este tutorial te explicamos cómo establecer prioridades en los procesos de las distros Linux usando nice y renice.

 

En este tipo de escenario es fundamental ejecutar los procesos necesarios en segundo plano, un proceso en segundo plano es el proceso que se ejecutará de forma oculta y para su funcionamiento no se requiere la intervención del usuario, de este modo, aunque se cierra la terminal principal, el proceso seguirá ejecutando su tarea. Los procesos de segundo plano aplican para aquellas tareas que pueden tomar tiempo, como scripts, archivos de descarga y demás, donde no podemos esperar a que se complete la acción sin hacer nada.

 

En linux podemos ejecutar procesos en primer plano (foreground) o bien en segundo plano (background). Un programa en foreground cuando se ejecuta en la terminal, no podremos ejecutar ningún otro comando hasta que termine el proceso, pero puede hacerse desde background o segundo plano.

 

Un programa que se ejecuta en background una vez iniciado, no utiliza la terminal desde que se ejecutó hasta que termina. Para ejecutar un software o comando en segundo plano desde la terminal añadimos Si añadimos un ampersand (&) al final del comando o del scriptque queremos ejecutar, éste sera ejecutado en segundo plano por el sistema operativo. Ejemplo:

nano &
Solvetic explicará cómo podemos ver y ejecutar procesos en segundo plano en Linux.

 

 


1. Ver listado de procesos con comando ps en Linux


Con el comando el comando ps, podemos conocer el estado de un proceso ps es process status o estado del proceso. El comando ps, no da un listado de los procesos y especifica algunas columna PID, TTY, TIME, y CMD.

 

PID (Numero del Proceso)
Cada proceso obtiene un numero de identificación único, que es asignado por el kernel de Linux.

 

TTY
es el terminal asociado con el proceso, también puede ser otro dispositivo de entrada.

 

TIME
El tiempo que el proceso ha estado en ejecución.

 

CMD
Es el nombre del comando que esta siendo ejecutado, bash es el proceso del shell.

 

 

Por ejemplo, con el comando ps -A nos mostrará todos los procesos ejecutándose.

 

 

 


2. Iniciar un proceso o un comando en segundo plano en Linux usando bg en Linux


El comando bg se ha desarrollado como un comando de control de trabajos el cual reanuda los trabajos suspendidos, pero los ejecuta en segundo plano.

 

Paso 1

La sintaxis básica de este comando es la siguiente:
bg [trabajo]
Paso 2

En caso de que ya se esté ejecutando un proceso, debemos pulsar las teclas siguientes para detenerlo y luego ingresar el comando bg para continuar su ejecución en segundo plano como un trabajo. Para este ejemplo usaremos las siguientes líneas:

 

 

 

 

 

Ctrl + Z

tar -czf home.tar.gz . (proceso en ejecución el cual será detenido con Ctrl + Z)
bg (ejecución del comando en segundo plano)
jobs (visualización de los trabajos realizados)

 

Paso 3

Podemos observar que el proceso se sigue ejecutando, pero ahora en segundo plano. También será posible ejecutar un proceso directamente en segundo plano ingresando el signo & al final de este:
tar -czf home.tar.gz . &
Jobs

 

 


3. Guardar los procesos de Linux en ejecución después de salir de la terminal en Linux


Este es un punto esencial ya que como hemos mencionado, en modo normal cuando se cierra la terminal todos los procesos activos finalizaran, de modo que es posible permitir que estos sigan en ejecución aun cuando la terminal sea cerrada.

 

Para este propósito podemos usar el comando disown el cual se usará después de que se haya iniciado un proceso y se haya puesto en segundo plano, el comando disown es un trabajo de shell que tiene como misión eliminar los trabajos de la lista activa del Shell activo.

 

Paso 1

Con la ejecución de disown, cuando cerremos la terminal, el trabajo no se bloqueará ni enviará un SIGHUP a ningún trabajo secundario. Su sintaxis básica es:
disown jobID
Paso 2

Para su funcionamiento ejecutaremos lo siguiente:
sudo rsync Templates/* /var/www/html/files/ & (comando a ejecutar)
jobs (trabajos activos)
disown  -h  %1 (orden de no cerrar el proceso o comando)
jobs (visualización de los trabajos)

 

Nota
En caso de estar ejecutando más de un proceso o comando, podemos ver que cada uno de ellos recibe un ID de identificación, este deberá ser ingresado con disown para especificar cual proceso continuará en ejecución.

 

Paso 3

Las opciones a usar con disown son:

 

-a
Elimina todos los trabajos si no se proporciona jobID.

 

-h
Marca cada ID de trabajo para que SIGHUP no se envíe al trabajo si el shell recibe un SIGHUP.

 

-r
Borra solo trabajos en ejecución.

 

 


4. Guardar los procesos de Linux en ejecución después de salir de la terminal en Linux


La tarea básica del comando nohup es evitar que el comando sea cancelado automáticamente al cerrar sesión o al salir del shell. Al usar el comando nohup (no hangup), la señal de suspensión (HUP), la cual se envía a un proceso para informarle que el usuario se ha desconectado, es interceptada por nohup con la finalidad de permitir que el proceso continúe ejecutándose en segundo plano.

 

Paso 1

La sintaxis de uso es la siguiente:
nohup comando [comando-argumento ...]
Paso 2

Para este caso usaremos el siguiente ejemplo. Si la entrada estándar es un terminal, nohup lo redirecciona desde /dev/null. Por lo tanto, la entrada de terminal no es posible cuando se ejecuta un comando con nohup. En caso de que la salida estándar es una terminal, la salida del comando se agrega al archivo nohup.out o $HOME/nohup.out. Si el error estándar es un terminal, se redirige a la salida estándar. Para guardar la salida en un archivo , debemos usar "nohup comando> archivo".
nohup tar -czf iso.tar.gz Templates/* &
jobs

 

 


5. Desvincular un proceso de Linux en la terminal

 

Paso 1

Si el objetivo es separar por completo un proceso de la terminal, debemos usar la siguiente sintaxis:
app </dev/null &>/dev/null &
Paso 2

Por ejemplo:
firefox </dev/null &>/dev/null &

 

 


6. Usar procesos en segundo plano con Screen en Linux


En caso de usar un comando en segundo plano, con las opciones nohup y &), éste se ejecutará aun después de cerrar la sesión, el problema radica en que, al volvernos a conectar a la misma sesión de nuevo, no veremos el trabajo activo en segundo plano, para corregir esto existe el comando screen.

 

screen es un administrador de ventanas de pantalla completa el cual gestiona un terminal físico entre varios procesos siendo normalmente los shells interactivos. Cada terminal virtual ofrece las funciones de un terminal DEC VT100 y, además, varias funciones de control de los estándares ISO 6429 (ECMA 48, ANSI X3.64) e ISO 2022 lo cual la hace sumamente dinámica.

 

Cuando ejecutamos screen, se crea una sola ventana con un shell o con el comando especificado y luego se desvía con el fin de poder usar el programa de forma normal.

 

Paso 1

Para instalar screen en Linux vamos a ejecutar lo siguiente. Allí ingresamos la letra S para confirmar la descarga e instalación.
sudo apt install screen

 

 

Paso 2

Una vez instalado ejecutamos el comando “screen” y veremos lo siguiente:

 

 

Paso 3

Allí pulsamos la tecla Enter para ser redireccionados a la nueva ventana donde ejecutamos el proceso o comando a usar en segundo plano:
sudo tar czf temp.tar.gz /tmp &

 

Paso 4

Podremos visualizar las ventanas activas usando. Para salir de la sesión de screen podremos usar las teclas

 

 

Ctrl + a + d

 

 

 

 

Ctrl + alt + d

screen -ls

 

 


7. Detener o matar un proceso suspendido o en segundo plano en Linux


Para esta acción el cual consiste en terminar la ejecución del proceso en segundo plano, podemos usar el comando “kill” y en lugar del PID podemos especificar el identificador de trabajo, por ejemplo:
jobs (lista los trabajos actuales)
kill %2 (mata o termina el proceso identifica como 2)

8. Parar un proceso o pasar un proceso a segundo plano


Algunos programas necesitan mucho tiempo para terminar, y no hacen nada importante mientras tanto. Compilar programas es una de estas tareas, así como comprimir un fichero grande. No tiene sentido dejar de utilizar el ordenador mientras estos procesos terminan y consumen recursos. En estos casos es mejor ejecutarlos en segundo plano, para dejar el ordenador en condiciones de ejecutar otro programa.

 

Tutorial sobre cómo usar el comando fkill para matar procesos en Ubuntu, Debian, CentOS o RedHat de Linux.

 

Los procesos pueden ser suspendidos. Un proceso suspendido es aquel que no se está ejecutando actualmente, sino que esta temporalmente detenido. Después de suspender una tarea, puede indicar a la misma que continúe, en primer plano o en segundo, según necesite. Retomar una tarea suspendida no cambia en nada el estado de la misma ya que continuará ejecutándose justo donde se detuvo.

 

Paso 1

Para interrumpir un proceso se utiliza la siguiente combinación, al pulsar esta combinación el proceso muere y se liberan todos los recursos.

 

Ctrl + C

 

Paso 2

Vamos a probar enviar un comando repetitivo a segundo plano. El comando yes se utiliza para probar script que requiere muchas confirmaciones lo que hace es repetir “y” con lo que se escriba delante infinitamente hasta que se detenga el script o el usuario lo detenga:
  • Si escribimos “yes” en la terminal y veremos una lista interminable de “y”.
  • Si escribimos yes hola en la terminal y veremos una lista interminable de hola

 

Paso 3

Para eliminar un archivo sin pulsar ninguna tecla cuando pida confirmación podemos utilizar
yes | rm -i *.txt
Paso 4

Para enviar un proceso a segundo plano lo llamamos desde la linea de comandos seguido de & creamos infinitos dispositivos nulos
yes > /dev/null &
Paso 5

Esto nos mostrará el número de tarea y el pid [1] 4106. Si utilizamos ahora el comando jobs veremos
[1]+  Ejecutando 							     yes > /dev/null &
Paso 6

para pasarlo a primer plano escribimos fg 1 y para matar el proceso kill 4106 que es el pid.
Fg 1
Kill 4106
Con alguna de las opciones indicadas, será posible administrar de una forma mucho más central los procesos en segundo plano en Linux y así permitir que las tareas requeridas sean ejecutadas aun cuando se cierre la sesión.

 

Tutorial para ver los procesos que están corriendo usando diferentes comandos completos en Ubuntu y todos sus parámetros.

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!