2

В моих привязках префикс + CTRL-Z запускает команду «suspend-client» в tmux. Я вызвал это много раз по ошибке, и у меня остался "терминал зомби" без подсказки, и я не могу понять, как его "разбудить".

Согласно справочной странице tmux:

suspend-client [-t target-client]
 (alias: suspendc)
 Suspend a client by sending SIGTSTP (tty stop).

Есть ли "обратный путь" или мне просто нужно убить терминал?

Для чего его используют?

1 ответ1

0

SIGTSTP является каноническим сигналом для приостановки процесса переднего плана и (почти) таким же, как ctrl+z . Очевидное преимущество заключается в том, что это останавливает использование ресурсов и любое другое влияние, которое он может иметь; он замораживает состояние процесса и передает управление родительскому процессу. Менее очевидным преимуществом является компонент TTY: вы немедленно восстанавливаете контроль над stdin/out/err, а когда вы возобновляете задачу, вы либо сохраняете контроль над выполнением и вводом / выводом с помощью bg , как если бы вы выполняли его как prog & , или отпустите с помощью fg (prog .) Я знаю, что SIGCONT возобновит процесс, но я не знаю, решит ли он или как он будет выбирать между FG / BG.

Теперь разница между SIGTSTP и SIGSTOP заключается в том, что SIGSTOP не подлежит обсуждению, тогда как SIGTSTP может быть "захвачен" (обработан / пойман / и т.д.) Вот простой пример, и вот несколько предостережений. Попробуйте man 7 signal - вы можете найти другое столкновение, если не использовать его в свою пользу.

Есть некоторые «внешние» команды, которые выполняют ту же роль - вы можете выполнить это с помощью stty ixon/ixoff , но я не эксперт, и я ничего не делал с сигналами. Возможно, сохраните шпаргалку, когда вы начнете тестирование, потому что кажется, что было бы очень легко заблокировать вашу среду.

Изменить - это не было полностью ясно из вашего сообщения - решит ли отключение привязки Tmux по умолчанию вашу проблему?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .