Ctrl+ Zdetiene el trabajo mientras que Ctrl+ lo Cmata.
¿Porqué es eso? ¿No tendría el otro sentido más sentido?
z@z-lap:~$ sleep 100&
[1] 4458
z@z-lap:~$ sleep 200&
[2] 4459
z@z-lap:~$ jobs
[1]- Running sleep 100 &
[2]+ Running sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^Z
[1]+ Stopped sleep 100
z@z-lap:~$ jobs
[1]+ Stopped sleep 100
[2]- Running sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^C
z@z-lap:~$ jobs
[2]+ Running sleep 200 &
bash
shell
signals
job-control
neo0
fuente
fuente
Respuestas:
Creo que puede estar confundido acerca de la notación de control de trabajo. Notablemente "Detenido" significa que un trabajo aún está vivo pero que su capacidad para procesar cualquier cosa se ha mantenido (no se le da tiempo en la CPU para procesar nada). Este es efectivamente un estado de "Pausa" o "Suspendido", aunque ese no es el término técnico correcto.
CtrlCno "detiene" un trabajo, lo cancela o lo mata. Técnicamente, hace que se envíe una señal de interrupción al programa diciéndole que cancele lo que está haciendo y salga inmediatamente. Algunos programas escucharán esta señal y realizarán un trabajo de limpieza de emergencia en ellos mismos antes de salir. Otros no responderán a la señal y, posteriormente, solo serán abortados.
CtrlZ, por otro lado, "detiene" un trabajo. De nuevo, esto se hace con una señal, pero esta vez es una señal de "parada" en lugar de una señal de "interrupción". Esto efectivamente lo pone en espera y devuelve el control al shell, pero en realidad no mata el trabajo. Si desea que dicho trabajo continúe ejecutándose, puede emitir un
bg
comando para enviar el último trabajo detenido al fondo. Luego continuará ejecutándose como un trabajo en segundo plano como si lo hubiera ejecutado&
en primer lugar. También puede usarfg
para reanudar el último trabajo detenido en primer plano (lo que le permite continuar donde lo dejó y le permite interactuar con él nuevamente).fuente
CTRL+C=SIGINT
yCTRL+Z=SIGTSTP
.