Як змусити від'єднати екран від іншого сеансу SSH?


158

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

Я хотів би приєднати до цього екранного сеансу свіжий логін SSH. Я не хочу вбивати цей екранний сеанс, оскільки там відбуваються важливі речі. :)

Варіанти, на які я думаю, є (жоден з яких я не знаю, як вирішити):

  • Як вилучити сеанс екрана?
  • Як вбити сеанс SSH, до якого приєднано сеанс екрана?

Відповіді:


252

Як відповів Хосе, screen -d -rслід зробити трюк. Це комбінація двох команд, взятих зі сторінки man.

screen -dвідключає вже запущений екранний сеанс і screen -rповторно приєднує існуючий сеанс. Запустивши screen -d -rекран, ви змусите екран зняти його, а потім відновити сеанс.

Якщо ви використовуєте капітал -D -RR, я цитую довідкову сторінку, тому що це занадто добре, щоб передати.

Прикріпіть тут і зараз. Що б це не означало, просто зробіть це.

Примітка. Завжди корисно перевірити стан своїх сеансів за допомогою "екранного списку".


3
Ви також можете робити те, screen -xщо швидше набирати, але не зовсім еквівалентно. Він приєднає сеанс вдруге, не відриваючи спочатку, що призведе до режиму багаторазового відображення.
jlh

10
пам’ятайте «Екранний лікар»; screen -Dr
користувач5359531


6

Коротка відповідь

  1. Повторно приєднайте, не викидаючи інших: screen -x
  2. Отримайте список дисплеїв: ^A *виберіть той, який потрібно відключити, і натиснітьd


Пояснена відповідь

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

Примітка: PREFIX зазвичай ^A=ctrl+a

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

  • "передній край користувача"atпосібнику з команди на екрані)
  • "client" (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Перехід до обраного рядка. Доступний, коли "мишачий трек" увімкнено.
  • space Оновіть список
  • d Від'єднайте цей дисплей
  • D Вимкніть живлення цього дисплея
  • C-g, enterабо escapeВийдіть зі списку

-2

Спробуйте команду screen -d -r. Це працювало для мене ..!


2
Повторюючи прийнятий, 6 - річний відповідь не корисно
Джеб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.