Como retomar a funcionalidade do terminal após emitir o comando "suspend"?

8

Digitei suspendmeu terminal e ele suspendeu a execução.

Como volto ao funcionamento normal do terminal? Eu tentei Ctrl+ C, Ctrl+ D, Ctrl+ Q( como sugerido aqui ) e Ctrl+ Z, mas nenhum deles funciona. Claro que posso fechar o terminal e abrir um novo, mas não há como "retomar" a funcionalidade do terminal?

Estou executando o Ubuntu GNOME 16.04, com shell padrão (bash).

Cerberus
fonte
Desculpe pelo que estou perguntando aqui, mas qual é o objetivo deste comando?
pa4080
1
Para interromper a execução de um script e continuar com ele mais tarde;)
Rinzwind 12/09

Respostas:

10

Do seu link:

até receber um sinal SIGCONT.

Então isso seria kill -SIGCONT {pid}

  • killall -CONT bash iria retomar tudo.
  • kill -18 {pid} seria o mesmo.
  • e assim é kill -s CONT {pid}

De acordo com esta lista, ele deve ser control-z, mas você precisa usar control-z para interromper o processo:

18 - SIGCONT - Resume process, ctrl-Z (2nd)
19 - SIGSTOP - Pause the process / free command line, ctrl-Z (1st)

Você precisa do {pid} da sessão do shell em execução no terminal


E também há comandos de controle de tarefas :

fg, bg

The fg command switches a job running in the background into the foreground. 
The bg command restarts a suspended job, and runs it in the background. 
If no job number is specified, then the fg or bg command acts 
upon the currently running job.
Rinzwind
fonte
Também deve ser Ctrl + Q, mas isso não está funcionando por algum motivo. Presumo que, como o shell está suspenso, ele não pode receber o Ctrl + Q (SIGCONT) da sessão suspensa. Funciona se, como você diz, você usa, kill -SIGCONT PIDmas não consigo encontrar uma maneira simples de obter o PID da sessão suspensa quando tenho muitos terminais abertos.
terdon 12/09
Isso não está funcionando. Eu usei ps aux | grep para obter o pid do terminal, tentei todas as 3 variações do SIGCONT, mas nenhuma funcionou. Quando acabei de matar o pid, o terminal foi fechado, então eu tive o pid correto.
Cerberus
@Cerberus você deseja que o PID da sessão do shell seja executado no terminal, não no próprio terminal. Se você tiver apenas um terminal aberto, deve ser fácil encontrá-lo pgrep bash. Caso contrário, use pstree -p, encontre o PID do terminal lá e observe os PIDs de seus filhos, um dos quais deve ser sua sessão do bash.
terdon 12/09/17
Precisarei ter duas sessões de terminal, pelo menos no cenário, uma suspensa e outra para enviar o SIGCONT.
Cerberus
1
O SIGCONT é normalmente ignorado, então por que não apenas disparar killall -CONT bash? :-)
Jonas Schäfer