В терминале (GNOME), если cat
файл оказывается слишком длинным, я всегда могу нажать Ctrl«-», cчтобы прервать его.
Однако в tmux
, когда происходит то же самое, требуется много времени, чтобы сигнал, создаваемый нажатием клавиши Ctrl- c, достиг сервера, и пока это не произойдет, сервер занят этим выводом, и я не могу ничего сделать, кроме как наблюдать за потоком (или использовать другой терминал).
Это немного похоже на описанную проблемуздесь.
Я не хочу перезапускать терминал, сервер или даже конкретное tmux
окно/панель; использование less
— это разумная привычка, но я спрашиваю здесь о том, как решать проблемы, которые уже возникли, а не о том, как быть умным и избегать их, думая, прежде чем действовать... сюрпризы будут всегда!
Итак, есть ли способ позволить терминалу остановить потоки, отбросить отправленные данные и т. д.? Что я могу сделать, чтобы освободить себя от этих раздражающихминутнаблюдать за персонажами на моем экране?
решение1
Два предложения
Редко в таких случаях CTRL+ z более эффективен, чем CTRL+ c: он отвечает быстрее. После этого вы приостанавливаете команду, которую можете убить с помощью
kill %1
или как там номер задания. В надежде, что вы все еще сможете что-то прочитать с экрана (затопление случайным двоичным текстом может легко испортить ваш набор символов).В другом терминале вы можете спросить
pgrep cat
(cat
была ли вызвана команда) и определитьcat
процесс, использующий вашПроцессорили поpstree
:pgrep cat | awk '{print "pstree -sp "$1}' | sh | grep tmux
ответ с выводом типа
init(1)---lightdm(1428)---lightdm(2518)---init(2534)---tmux(22425)---баш(22426)---кот(22532)В этом случае, после того как у вас осталось
kill
толькоcat
PID
:
kill 22532
Примечание:
- Если вы нажмете CTRL+ Cили CTRL+ zи после этого свернете окно, вероятно, система быстрее вас прочитаетзапрос на прерывание. Так что приостановка/прерывание, минимизация, ожидание немного, максимизация снова могут быть решением.
- Как вы сказали,
less
это безопаснее. - Протестировано еще раз с tmux 1.8 и работает
решение2
Добавьте следующие строки в ваш tmux.conf (~/.tmux.conf)
set -g c0-change-trigger 150 set -g c0-change-interval 100
Более подробную информацию можно найти на сайтеhttp://blog.fraggod.net/2014/09/23/tmux-rate-limiting-magic-against-terminal-spamflood-lock-ups.html