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


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.

Также должно быть 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? :-)
Йонас Шефер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.