Как возобновить работу терминала после выдачи команды «приостановить»?

8

Я набрал suspendв своем терминале, и он приостановил выполнение.

Как мне вернуться к нормальной работе терминала? Я пробовал Ctrl+ C, Ctrl+ D, Ctrl+ Q( как предложено здесь ) и Ctrl+ Z, но ничего из этого не работает. Конечно, я могу закрыть терминал и открыть новый, но нет ли способа «возобновить» работу терминала?

Я использую Ubuntu GNOME 16.04 с оболочкой по умолчанию (bash).

Цербер
источник
Извините за это, я спрашиваю здесь, но какова цель этой команды?
pa4080
1
Чтобы прекратить выполнение сценария и продолжить его позже;)
Rinzwind

Ответы:

10

По вашей ссылке:

пока не получит сигнал SIGCONT.

Так что это будет kill -SIGCONT {pid}

  • killall -CONT bash возобновил бы все.
  • kill -18 {pid} было бы то же самое.
  • и так kill -s CONT {pid}

Согласно этому списку это должен быть control-z, но вам нужно использовать control-z, чтобы остановить процесс:

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

Вам нужен {pid} сеанса оболочки, запущенного в терминале


И есть также команды управления заданиями :

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
источник
Также должно быть Ctrl + Q, но по какой-то причине это не работает. Я предполагаю, потому что, поскольку оболочка приостановлена, она не может получить Ctrl + Q (SIGCONT) из приостановленной сессии. Это работает, если, как вы говорите, вы используете, kill -SIGCONT PIDно я не могу найти простой способ получить PID приостановленного сеанса, когда у меня открыто много терминалов.
Тердон
Это не работает Я использовал PS Aux | grep термин, чтобы получить pid терминала, перепробовал все 3 варианта SIGCONT, но ни один не работал. Когда я просто убил pid, терминал закрылся, поэтому у меня был правильный pid.
Цербер
@Cerberus вы хотите, чтобы PID сеанса оболочки выполнялся в терминале, а не в самом терминале. Если у вас есть только один открытый терминал, его легко найти pgrep bash. Если нет, используйте pstree -p, найдите там PID терминала и посмотрите PID его дочерних элементов, одним из которых должен быть ваш сеанс bash.
Тердон
Мне понадобится, по крайней мере, два сеанса терминала, один из которых приостановлен, а другой - для отправки SIGCONT.
Цербер
1
SIGCONT обычно игнорируется, так почему бы просто не выстрелить killall -CONT bash? :-)
Йонас Шефер