Назад | Перейти на главную страницу

Не удается восстановить отсоединенный экран

Я использую шпатлевку и у меня ненадежное беспроводное соединение, поэтому я использую экран, чтобы продолжить работу. Часто меня отключают, и я не могу снова подключить свой экран. Я бегу screen -D -RR и он просто будет сидеть там бесконечно. я пробовал ctrl + z чтобы вернуть мою консоль, а затем ps aux | grep screen а потом kill -9 для всех результатов, а затем screen -D -RR снова, но я получаю те же результаты. Я пробую любую комбинацию d и r, о которых вы хотите упомянуть, но все равно она остается неизменной. Мой экран там, он просто ничего не сделает, тем более возобновить.

У кого-нибудь есть советы, уловки или идеи о том, как возобновить сеанс экрана?

Я видел это, когда разорвал соединение с активным экраном, а затем снова подключился. Ошибка # 27462. («Повторное подключение киосков при потере исходного сеанса») описывает проблему, как я ее вижу. Кажется, что происходит то, что экран пытается уведомить терминал, на котором он находится, о том, что он собирается уйти, но поскольку терминал зависает из-за разрыва соединения, ему приходится ждать, пока истечет тайм-аут (который составляет более пяти минут. в некоторых случаях).

Чтобы исправить это, я делаю так:

  • выяснить, какой tty удерживает сеанс экрана ps -ef | grep screen | grep pty
  • найдите вход в систему, связанный с этим tty ps -ef | grep bash | grep $PTY
  • убей этот удар kill -KILL $PID

Это заставляет экран правильно завершить свое отключение и позволяет повторно подключиться в обычном режиме.

Посмотреть здесь для примера сценария, который несколько автоматизирует это.

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

screen -x <session_name>

Это сработало как чемпион!

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

ssh myname@foo
screen -S sessionName
(do my work... get disconnected...)

ssh myname@foo
screen -d (just to make sure anything wasn't left attached)
screen -r sessionName

Возможно ли, что эта ошибка влияет на вас?

http://savannah.gnu.org/bugs/?27462

Можете ли вы попробовать обходной путь, который они рекомендуют, и посмотреть, работает ли он?

Соулрсе:https://kb.iu.edu/data/ahrm.html

To see your existing screen sessions, enter:
  screen -list
This will display a list of your current screen sessions. For instance, if you had one attached screen, you would see:

         1636.pts-21.hostname      (Attached)

To detach an attached screen, enter:
  screen -D
If you have more than one attached screen, you can specify a particular screen to detach. For example, to detach the screen in the above example, you would enter:
  screen -D 1636.pts-21.hostname

Если вы такие же умные, как я, вы пытались возобновить сеанс экрана, начатый как root с учетной записью обычного пользователя. Обнаружил это с ls /var/run/screen показывая мне каталог для root

Иногда у меня возникает такая же проблема (screen -r -d не возобновляется, не отвечает). Чтобы исправить это, найдите терминал (tty / pty), связанный с сеансом экрана:

screen -list
There is a screen on:
    28176.pts-51.localhost        (Attached)
1 Socket in /tmp/uscreens/S-xxxx.

Найдите терминал в списке (в этом примере pts-51):

ps axuw | grep 'pts/51'   # will vary depending upon how pty's are named
you     12293  0.0  0.2  2148 1128 pts/51   Ss   10:34   0:00 -bash

Убейте процессы на этом терминале (обычно это ваша оболочка):

kill 12293

снова запустите ps, чтобы убедиться, что он исчез. Если не :

kill -9 12293

На моем сервере (gnu / linux) мне иногда придется убить -9 несколько раз, пока он не умрет.

После того, как все процессы на этом tty прекратятся, screen должен возобновить работу правильно:

screen -r -d

Удалите мертвые экраны с помощью screen -wipe.