Я раніше приєднався до тривалого сеансу роботи з екраном screen -dr control
. Однак іноді ця команда не повторно приєднається до екрану, а замість цього вічно повісить (10+ хвилин, після чого я зробив перерву). Це відбувається лише тоді, коли з'єднання SSH несподівано перестане, а не тоді, коли екран належним чином від'єднаний Ctrl-A d
. Інші перемикачі, такі як screen -x
або screen -D -RR
теж не працюють.
Цей пост пропонує вбити PTY, який проводить сеанс екрана, що призведе до того, що екран завершить його відключення. Однак він просто вбиває оболонку, з якої screen -dr control
був викликаний.
Наприклад:
$ ps -ef | grep control | grep -v grep
nomad 7387 7109 0 13:05 pts/50 00:00:00 screen -dr control
nomad 15299 1 0 Nov27 ? 00:13:47 SCREEN -S control
$ ps -ef | grep bash | grep 'pts/50'
nomad 7109 7108 0 12:49 pts/50 00:00:00 -bash
Пов’язаний пост пропонує вбити bash
процес із PID 7109. Це також знищить screen -dr control
процес із PID 7387. Згодом я все ще не можу підключитися до екрана.
Процес, SCREEN -S control
який розпочав сеанс екрана, є init
його батьківським, і я, очевидно, не можу вбити.
Чи є спосіб повторного приєднання до сеансу на вивішеному екрані?
Оновлення: це відбувається на CentOS 6.4 за допомогою ядра 2.6.32-358.6.1.el6.x86_64. Снаряди - це bash версія 4.1.2 (1) -випуск.
screen -ls
говорить у тих "висячих" випадках?screen -d -r <session>
означає "від'єднати та відновити", тому не від'єднувати його з перших рук не має значення. (І робити це часто, це не так ...)