Как принудительно отключить Screen от другого сеанса SSH?

158

У меня был экран, работающий внутри сессии SSH. Терминал замерз. После перезапуска терминала этот сеанс экрана все еще думает, что он подключен. Может быть это. Возможно, я действительно не знаю, что это значит.

Я хотел бы присоединиться к этому сеансу экрана с новой учетной записи SSH. Я не хочу убивать эту сессию экрана, потому что там происходят важные вещи. :)

Варианты, которые я думаю, у меня есть (ни один из которых я не знаю, как решить):

  • Как мне отключить сеанс экрана?
  • Как убить сеанс SSH, к которому присоединен этот сеанс экрана?
Т. Брайан Джонс
источник

Ответы:

252

Как ответил Хосе, screen -d -rследует сделать свое дело. Это комбинация из двух команд, взятых из справочной страницы.

screen -dотключает уже запущенный сеанс экрана и screen -rповторно подключает существующий сеанс. При запуске screen -d -r, вы вынуждаете экран , чтобы отделить его , а затем возобновить сеанс.

Если вы используете заглавную букву -D -RR, я цитирую справочную страницу, потому что это слишком хорошо, чтобы отказаться от нее.

Прикрепите здесь и сейчас. Что бы это ни значило, просто сделай это.

Примечание. Всегда полезно проверять состояние ваших сеансов с помощью «screen -list».

Мэтт С.
источник
3
Вы также можете делать то, screen -xчто быстрее набирать, но не полностью эквивалентно. Он присоединит сеанс во второй раз, не отключая сначала, что приведет к режиму мультидисплея.
JLH
10
помните "Доктор экрана"; screen -Dr
user5359531
43

попробуйте с screen -d -rилиscreen -D -RR

Хосе Луис Мартин
источник
6

Короткий ответ

  1. Повторно прикрепите, не выталкивая других: screen -x
  2. Получить список дисплеев: ^A *выберите отключаемый, нажмитеd


Объяснил ответ

Предыстория: Когда я искал решение с тем же описанием проблемы, я всегда находил этот ответ. Я хотел бы предоставить более разумное решение. (Например: другой прикрепленный экран имеет другой размер, и я не могу принудительно изменить его размер в моем терминале.)

Примечание: PREFIX обычно ^A=ctrl+a

Примечание: дисплей также можно назвать:

  • «пользовательский интерфейс»atруководстве по команде на экране)
  • "клиент" (словарь tmux, где эта функциональность есть detach-client)
  • «терминал» (как мы называем окно в нашем пользовательском интерфейсе) / в зависимости от

1. Повторно подключите сеанс :screen -x

-xприкрепить к неотсоединенному сеансу экрана, не отрывая его

2. Список отображений этого сеанса:PREFIX *

Это ключ по умолчанию для привязки: PREFIX :displays. Выполняя это на экране, определите другой дисплей, который мы хотим отключить (например, меньший размер). (Ваш текущий дисплей отображается более ярким цветом / жирным шрифтом, если он не выбран ).

term-type   size         user interface           window       Perms
---------- ------- ---------- ----------------- ----------     -----
 screen     240x60         you@/dev/pts/2      nb  0(zsh)        rwx
 screen      78x40         you@/dev/pts/0      nb  0(zsh)        rwx

Используя стрелки , выберите целевой дисплей , нажмите d Если ничего не происходит, вы попытались отсоединить свой собственный дисплей, и экран не отсоединит его. Если это был другой, через секунду или две, запись исчезнет.

Нажмите, ENTERчтобы выйти из списка.

Опционально: для того, чтобы контент соответствовал вашему экрану, переформатируйте : PREFIX F(прописная буква F)

Выдержка из справочной страницы экрана:

дисплеи

Показывает табличный список всех в настоящее время подключенных пользовательских интерфейсов (отображает). Это наиболее полезно для многопользовательских сессий. В списке дисплеев можно использовать следующие ключи:

  • mouseclickПерейти к выбранной строке. Доступно, когда "mousetrack" включен.
  • space Обновить список
  • d Отсоединить этот дисплей
  • D Отключить дисплей
  • C-g, enterили escapeВыход из списка
user10874456
источник
-2

Попробуйте команду screen -d -r. Это сработало для меня ..!

Вимал Сурендран
источник
2
Повторять принятый 6-летний ответ не поможет
Джеб