¿Cuál es el efecto de CTRL + Z en una aplicación unix \ Linux?

85

Tenía curiosidad y confusión sobre cuál es exactamente el comportamiento de CTRl + Z.

Lo sé, si un proceso se ejecuta en primer plano, y presionamos ctrl + z, pasa a segundo plano.

Pero qué pasa exactamente.

¿Sigue haciendo su trabajo, o se suspende y se detiene en el punto donde estaba?

Y si se detiene en ese punto, y cuál es el significado del trabajo en segundo plano.

Kumar Alok
fuente
77
Ctrl-Z no envía un proceso a un segundo plano, lo suspende.
Wooble

Respuestas:

70

Un "trabajo en segundo plano" es solo uno que no interactúa con el usuario: no controla el tty y solo hace lo suyo (generalmente en silencio). Un trabajo en primer plano es lo contrario, tiene el control de tty para interactuar con el usuario.

Control-Z suspende el proceso de primer plano más reciente (el último proceso para interactuar con el tty) (a menos que ese proceso tome medidas para ignorar la suspensión, como suelen hacer los shells). Esto generalmente lo llevará de regreso a su shell, desde el cual generalmente puede ingresar el comando bgpara mover el proceso recién suspendido a un segundo plano (permitiendo que continúe ejecutándose) o fgvolverlo a primer plano.

mah
fuente
1
para deshacer un proceso en segundo plano con fgidentificar primero qué trabajo emitiendo y jobs luego decir si su% 1, luego el problema fb %1 y el proceso se reanudarán
Scott Stensland
fg %1nofb %1
ahonnecke
55

Al presionar Ctrl + Z se envía la TSTPseñal a su proceso. Esto detiene la ejecución (el núcleo no programará más tiempo de CPU para el proceso) y el proceso está esperando un CONT para continuar el procesamiento.

Puede emular / replicar esto a través de kill -TSTPy kill -CONT(ya killque enviará una señal nominada a su proceso, ¡a pesar del nombre!)

El shell tiene la funcionalidad de "fondo" del proceso, pero esta es una relación entre el shell y el proceso. El proceso en sí no tiene realmente el concepto de 'fondo' o 'primer plano'.

Ver aquí para más información.

Brian Agnew
fuente
2
^Zenvía SIGTSTP, no SIGSTOP
William Pursell
@WilliamPursell - ¡ah! Célebre. Ahora ha cambiado. Thx
Brian Agnew
15

Considere este comando, que toma aprox. 4.5 segundos en mi computadora portátil:

echo 2^10000000 | bc -lq | wc -c

Cuando presione Ctrl+ Z, el cálculo se suspenderá. Tiene la opción de reanudar el cálculo en primer plano utilizando fg, o reanudarlo en segundo plano utilizando bg. Este último es más o menos equivalente a ejecutar:

echo 2^10000000 | bc -lq | wc -c &
Bolo
fuente
9

Se suspende y detiene un proceso al presionar ctrl + z. Con fg puede mover el trabajo suspendido al primer plano, con bg puede ejecutarlo en segundo plano.

Ver http://linuxreviews.org/beginner/jobs/ para más información.

alexclooze
fuente