Haciendo una pausa un programa de larga duración en el terminal?

17

¿Existe una combinación de teclas que pueda usar para pausar un programa que se ejecuta en el terminal? En caso de que sea importante, no tengo la intención de ejecutar nada más dentro de ese terminal mientras el programa está en pausa. Solo quiero pausar la ejecución del programa y reanudarla más tarde. ¿Cómo puedo hacer esto?

becko
fuente
¿Qué programa exactamente?
Jobin
@Jobin Un programa que escribí en C ++. Pero no quiero cambiar el código fuente.
becko
¿Desea reanudar el proceso después de un reinicio o algo así?
jobin
@Jobin No, no quiero reiniciar. Quiero continuar más tarde, pero no reiniciaré el sistema en el medio.
becko

Respuestas:

17

Presione Control+ Z.

Esto suspenderá el proceso y lo devolverá a un shell. Usted puede hacer otras cosas ahora si desea o puede volver al proceso en segundo plano mediante la introducción %seguida de Return.

Tenga en cuenta que si está haciendo esto para algo que necesita ser receptivo, va a depositar el sistema, pero si es algo así como una nanoinstancia, todo debería estar bien.

Oli
fuente
¿Es seguro pausar el proceso terminal?
Pandya
@Pandya: ¿Por qué no?
jobin
@Pandya Estoy seguro de que eso depende del proceso ... Si algo es muy sensible al tiempo, es posible que no espere que se suspenda, pero la mayoría de las cosas deberían estar bien.
Oli
15

Este es el control de trabajo bash

Use CTL-Z para detener el trabajo.

Luego puede escribir bg para ejecutarlo en segundo plano, si solo hay trabajo, hace exactamente eso.

Si tiene más de uno, puede usar trabajos para enumerarlos y usar fg% N y bg% N para obtener el efecto deseado.

Ejemplo:

ubuntu @ ip-10-170-59-120: ~ $ find / usr -name "* .so"
/usr/lib/python2.7/dist-packages/OpenSSL/crypto.so
/usr/lib/python2.7/dist-packages/OpenSSL/SSL.so
/usr/lib/python2.7/dist-packages/OpenSSL/rand.so
/usr/lib/python2.7/dist-packages/gi/_glib/_glib.so
/usr/lib/python2.7/dist-packages/gi/_gobject/_gobject.so
/usr/lib/python2.7/dist-packages/gi/_gi.so
/usr/lib/python2.7/config/libpython2.7.so
...
^ Z
[1] + Detenido find / usr -name 

ubuntu @ ip-10-170-59-120: ~ $ jobs
[1] + Detenido find / usr -name "* .so"

ubuntu @ ip-10-170-59-120: ~ $ fg% 1
find / usr -name "* .so"
/usr/lib/php5/20090626+lfs/apc.so
/usr/lib/php5/20090626+lfs/memcache.so
/usr/lib/php5/20090626+lfs/mysql.so
...

Para cualquier otra cosa que no esté conectada al TTY, puede usar SIGSTOP y SIGCONT . Entonces, por ejemplo, si crees que un demonio está causando problemas pero no sabes cuál es, puedes enviar el pid SIGSTOP, es como presionar pausa, luego verifica los cambios, OK, no es así, y enjuaga y repite hasta que Encuentra el problema.

Espero que esto ayude.

ppetraki
fuente
1
¡Buena respuesta! ¿Puedo agregar que eso no es solo cosa de fiesta? Korn shell funciona de la misma manera.
Sergiy Kolodyazhnyy
4

Sé que esta respuesta llega un poco tarde, pero puede usar el acceso directo Ctrl+spara detener su programa (si desea que se le lea la salida o algo así), puede continuar usando el acceso directo Ctrl+q.

Sidahmed
fuente