Экран GNU не отвечает, кажется, заблокирован


88

Экран GNU зависает. Невозможно ввести данные пользователя.

Я использовал экран GNU, и когда я нажал на экран, он перестал отвечать. Я могу выполнять все экранные команды GNU, но не могу вводить данные пользователя. Я не хочу убивать этот экран, потому что у меня важная работа, и я не хочу ее терять.


Ответы:


132

В приведенных ниже командах замените Ctrlлюбой клавишей ESC для экранных команд.

Попробуйте Ctrl+ a q, это последовательность для разблокировки прокрутки.

Ctrl+ a s- это последовательность, которая блокирует прокрутку, из-за чего экран кажется зависшим.


Ну, сработало, но только на одном экране, на другом
вышло

7
Вы, сэр, просто сделал мой день :) Документация по экрану GNU не появилась при поиске в Google "gnu screen freeze": /
david_p

1
У меня такая же проблема. Заморозился только один экран, что заставило меня поверить, что проблема связана с конкретным экраном. Действительно, я случайно нажал Ctrl-A s.
smithfarm 06

Я так привык использовать CTRL + A, чтобы перейти к sudoначалу командной строки и добавить (так как я забыл начать с него), что, когда я использую экран, я все время его блокирую! Как сказано в предыдущем комментарии, в CTRL+A qосновном работает, иногда есть экран. Хотелось бы, чтобы CTRL + A не был по умолчанию, на серверах, которые я использую много, я меняю его на клавишу «ESC».
johnnyB 02

1
Объедините этого мерзкого зверя с ужасным Ctrl + S PuTTY, который отправляет XOFF, и это действительно заставляет меня бояться буквы s на моей клавиатуре. Это зло. Как ни странно, нажатие клавиши PuTTY - Ctrl + Q для отправки XON ... «q» - спаситель. Спасибо, 6-летний ответ.
JNevill

67

При использовании PuTTY вы можете получить явно замороженный экран, если нажмете Ctrl+ s. Это отправляет Xoffсигнал, блокирующий выход терминала.

Решение - нажать Ctrl + qдля отправки Xonсигнала.


Также у меня работал на ROXTerm в Linux - экран был заблокирован, и мне было предложено войти в систему.
Pocketsand

Спас мой день (и ночь).
sk

8

Вышеупомянутое отлично работает, если это ваша проблема.

Это также может произойти, если вы подключились по ssh к другой машине и какое-то время не были в окне, а затем, когда вы вернетесь, он завис. Чтобы исправить это, вы можете попробовать следующее:

1) Создайте новое окно

Ctrl-a c

2) ssh в поле, где вы ssh в поле в замороженном окне.

3) Найдите процесс, под которым работает ssh:

ps aux | grep <remote_box_on_frozen_screen>

или

ps aux | grep <your_user_id>

4) Убейте процесс

kill <process_id>

Не знаю, как я довел что-то до такого безответного состояния, поскольку обычно ctrl-q у меня работает, но мне пришлось сделать это и потерять свою работу. +1 за совет
о

2
Чаще всего любое замороженное соединение SSH можно принудительно закрыть, нажав Enter, затем ~и затем .(см. Также здесь ).
fotNelton 02

3

Когда вы делаете screen -lsпервое число экранного имени, это идентификатор процесса. Итак, если на выходе

There is a screen on:
    21605.pts-0.Random-server   (11/12/2017 11:44:15 PM)    (Detached)
1 Socket in /var/run/screen/S-kg.

Тогда это убьет его:

kill 21605

Обратите внимание, что номер команды kill такой же, как и в screen -lsвыводе.


2

Если вы используете команды обратной кавычки в строке состояния - то есть, если у вас .screenrcесть что-то вроде этого:

backtick 1 0 60 /some/script.sh

тогда вы хотите быть уверены, что сценарий работает быстро: очевидно, выполнение обратного апострофа блокирует весь ввод-вывод на экран.

Если вы внесете изменения в конфигурацию, вам нужно будет перезапустить сеанс экрана (поскольку конфигурация применяется только к новым сеансам).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.