Я использую шпатлевку и у меня ненадежное беспроводное соединение, поэтому я использую экран, чтобы продолжить работу. Часто меня отключают, и я не могу снова подключить свой экран. Я бегу screen -D -RR
и он просто будет сидеть там бесконечно. я пробовал ctrl + z чтобы вернуть мою консоль, а затем ps aux | grep screen
а потом kill -9
для всех результатов, а затем screen -D -RR
снова, но я получаю те же результаты. Я пробую любую комбинацию d и r, о которых вы хотите упомянуть, но все равно она остается неизменной. Мой экран там, он просто ничего не сделает, тем более возобновить.
У кого-нибудь есть советы, уловки или идеи о том, как возобновить сеанс экрана?
Я видел это, когда разорвал соединение с активным экраном, а затем снова подключился. Ошибка # 27462. («Повторное подключение киосков при потере исходного сеанса») описывает проблему, как я ее вижу. Кажется, что происходит то, что экран пытается уведомить терминал, на котором он находится, о том, что он собирается уйти, но поскольку терминал зависает из-за разрыва соединения, ему приходится ждать, пока истечет тайм-аут (который составляет более пяти минут. в некоторых случаях).
Чтобы исправить это, я делаю так:
ps -ef | grep screen | grep pty
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
.