Pausando um programa de longa duração no terminal?

17

Existe uma combinação de teclas do teclado que eu possa usar para pausar um programa em execução no terminal? Caso isso importe, não pretendo executar mais nada nesse terminal enquanto o programa estiver em pausa. Eu só quero pausar a execução do programa e continuar mais tarde. Como posso fazer isso?

becko
fonte
Qual programa exatamente?
Jobin
@Jobin Um programa que escrevi em C ++. Mas não quero mudar o código fonte.
Becko
Deseja retomar o processo após uma reinicialização ou algo assim?
Jobin
@Jobin Não, não quero reiniciar. Quero retomar mais tarde, mas não reinicializarei o sistema no meio.
Becko

Respostas:

17

Pressione Control+ Z.

Isso suspenderá o processo e retornará você a um shell. Você pode fazer outras coisas agora, se quiser, ou pode retornar ao processo em segundo plano digitando %seguido por Return.

Observe que, se você estiver fazendo isso com algo que precisa ser responsivo, vai aquecer o sistema, mas se for algo como uma nanoinstância, tudo deve ficar bem.

Oli
fonte
É seguro pausar o processo do terminal?
Pandya
@ Pandya: Por que não?
Jobin
@ Pandand Tenho certeza de que depende do processo ... Se algo é muito sensível ao tempo, pode não ser suspenso, mas a maioria das coisas deve ficar bem.
Oli
15

Este é o controle do trabalho do bash

Use CTL-Z para interromper o trabalho.

Em seguida, você pode digitar bg para executá-lo em segundo plano, se houver apenas um trabalho que faça exatamente isso.

Se você tiver mais de um, poderá usar os trabalhos para listar e usar fg% N e bg% N para o efeito desejado.

Exemplo:

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] + Localização interrompida / usr -name 

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

ubuntu @ ip-10-170-59-120: ~ $ fg% 1
encontre / 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 qualquer outra coisa que não esteja anexada ao TTY, você pode usar SIGSTOP e SIGCONT . Por exemplo, se você acha que um daemon está causando problemas, mas não sabe qual é, pode enviar o PID SIGSTOP, é como fazer uma pausa, depois verificar se há alterações, OK, não é isso, enxaguar e repetir até você encontre o problema.

Espero que isto ajude.

ppetraki
fonte
11
Boa resposta! Posso apenas acrescentar que não é apenas uma coisa de festa? Korn shell funciona da mesma maneira.
Sergiy Kolodyazhnyy
4

Eu sei que essa resposta está um pouco atrasada, mas você pode usar o atalho Ctrl+spara interromper o programa (se você quiser ler a saída ou algo parecido com isso), poderá continuar usando o atalho Ctrl+q.

Sidahmed
fonte