Shell y Procesos Linux - LPI 101

Procesos background y forground

Después de haber iniciado un proceso desde el shell, se abandona automáticamente el intérprete de shell. Notará que no hay órdenes que respondan. La razón de esto es que es posible ejecutar programas en el primer plano fg o en el fondo bg de un shell.

Cuando un programa se ejecuta en primer plano es posible recuperar el indicador de shell pero sólo interrumpiendo el programa durante el while. La señal de interrupción es Ctrl Z.

Detención y inicio de trabajos

Un proceso que se inicia desde un shell también se llama job. Una vez que el job recibe la señal ^Z, se detiene y se recupera el indicador del intérprete de comandos. Para reiniciar el programa en el background escribe: bg.

Ejemplo

  • [mike localhost /bin]$xclock
    • Xclock corriendo en forground, shell prompt lost
  • [1] + Stopeped xclock 
    • xclock recibido ^Z señal
  • [mike localhost /bin] $bg 
    • prompt de shell recuperado, emita el comando bg
  • [1] + xclock & 
    • xclock se ejecuta en segundo plano
  • [mike localhost /bin] $

Observe el símbolo [1] + arriba. El número entero es el número de trabajo del proceso, al que puede denominarse.
El signo '+' indica el último proceso modificado. Un signo '-' indicaría el segundo proceso modificado por última vez.
Se puede iniciar un proceso en segundo plano añadiendo un & al comando.
Imagen

Lista de jobs

La utilidad de jobs enumera todos los procesos en ejecución iniciados desde el shell actual. Se mostrará el número de job, el estado del job (running/stopped), así como los dos últimos procesos modificados.

El número de job
Uno puede parar y comenzar una selección de jobs usando el número de job. Esto se consigue con la orden fg.

Llamando el job 2 al primer plano y matando el job 1
fg 2     or  kill -9 %1
fg %2  or  fg %? xma

Evitar HUP con nohup

Finalmente hay un programa llamado nohup que actúa como un proceso padre independientemente de la sesión del usuario. Cuando un usuario cierra la sesión, el sistema envía un HUP a todos los procesos pertenecientes a ese grupo de procesos. Por ejemplo, para evitar esta señal HUP un script llamado bigbang que intenta calcular la edad del Universo debe iniciarse así:

Publicar un comentario

0 Comentarios