Я использовал irssi на экране, но потерял связь. После того, как я вернул ssh на сервер, я больше не могу подключаться к этому экрану. screen -ls показывает, что экран уже подключен.
Я попробовал screen -D, чтобы заставить его отсоединить, и он сказал отсоединиться, но screen -ls все еще говорит, что он подключен. Я попробовал screen -x, и он просто завис там.
[sub@server ~]$ screen -ls
There are screens on:
4033.poe (Detached)
7728.irssi (Attached)
2 Sockets in /var/run/screen/S-sub.
Что я могу сделать сейчас?
источник
Вы дали ему имя не по умолчанию. Попробуй это:
screen -RD irssi
источник
можешь попробовать:
всегда полезно использовать полное имя
pid.tty
источник
screen
известен тем, что не имеет обратной совместимости между версиями. Если версияscreen
была обновлена на сервере, возможно, вы больше не сможете подключиться к более старым сеансам экрана.В этом случае вы можете либо использовать старый двоичный файл SCREEN для повторного присоединения (если ваш менеджер пакетов распространения сохранил его где-то), либо полностью прекратить сеанс.
источник
У меня был некоторый успех, послав процесс GNU / screen SIGCHLD (который он обычно получает, когда окно закрыто), это заставляет его коснуться (и, возможно, воссоздать) файл сокета.
Также обратите внимание, что существует два способа вызова
screen
исполняемого файла, которые различаются только в том случае:SCREEN
это серверный компонент, кscreen
которому вы пытаетесь подключиться, а также клиентская сторона, которая перетасовывает данные между вашим терминалом и серверной стороной. Так что вы можете попробовать убить строчную версию ...Например, в следующем примере вы можете видеть, что процессы my
screen
иSCREEN
не считаются родительскими и дочерними, что указывает на то, что я подключен к существующему сеансу.Свежие сессии выглядят так:
источник
kill
например, так:kill -s SIGCHLD <PID>
где<PID>
находится номер идентификатора процесса (Это случилось со мной, когда я использовал vi, когда сессия зависла, и я отключился. При попытке подключиться к экрану с помощью screen -Arx процесс просто зависает.
Возможно, запущен похожий дочерний процесс, вызывающий зависание экрана. Если вы помните один конкретный акцент на этом, в противном случае, чтобы получить список дочерних процессов, запущенных под вашим экраном, выполните:
Который покажет вложенные дочерние процессы:
После уничтожения процесса vi, который вызвал проблему, я смог снова подключить экран без каких-либо проблем. Убийство любых предыдущих процессов, которые были подключены к экрану, вероятно, также является хорошей идеей. Просто используйте:
Я не знаю, что делает внутренне экран, почему vi вызвал зависание экрана, или почему остановка процесса vi вернула мой экран. В прошлом я сталкивался с этой проблемой с экраном и безуспешно пытался рекомендовать то, что большинство людей рекомендовали в этой теме. Нахождение этой проблемы дочерний процесс - единственное, что сработало для меня и работало последовательно в этом.
источник
источник
Это сработало для меня. У меня было 3 разных экрана, и я потерял 3 разных ssh-соединения. После переподключения экраны все еще были подключены, я дал команду выше ... конечно, я потерял свое текущее соединение, но оно было свежим. При следующем переподключении каждый экран был отключен.
Обратите внимание: если вы являетесь суперпользователем, вам следует использовать
--user
опцию, чтобы убить только ваши ssh-демоны.источник