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).


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.

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.