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

Очистить потерянные сеансы экрана для несуществующих пользователей

Я столкнулся с проблемой, когда у меня есть пользователи, которые входят на серверы под учетными записями клиентов, открывают сеанс экрана от имени этого пользователя, а затем никогда не закрывают его. Обычно это не вызывает особого беспокойства, однако мы сталкиваемся с проблемой, когда, если клиент мигрирует с сервера [который удаляет его учетную запись] с активным сеансом экрана под его именем пользователя, этот сеанс экрана простаивает. Хотя это по-прежнему не большая проблема, есть еще один шаг в этом кластере.

Если клиент, который ранее находился на сервере, на котором все еще активен старый сеанс экрана, переносится назад к экрану сервера отказывается запускаться, потому что /var/run/screen/S-username все еще существует и принадлежит старый UID, и пользователю [с новым UID] не разрешается прикасаться ни к одному из этих файлов в их указанном каталоге.

Я пробовал:

Как я могу правильно выключить экран и очистить все его файлы, когда пользователь больше не существует?

Если у вас все в порядке с их уничтожением и вы действительно просто хотите как-то справиться с незавершенными сокетами, находящимися в / var / run / screen, я бы просто настроил задание cron, используя find с флагом -nouser, чтобы очистить старые файлы:

# touch owned notowned && chown 12345:54321 notowned
# ls -l
total 0
-rw-r--r-- 1 12345 54321 0 Sep 27 21:59 notowned
-rw-r--r-- 1 root  root  0 Sep 27 21:59 owned
# find . -nouser
./notowned
#

Делает screen -wipe делай то, что ищешь? Он хорошо работает для удаления неработающих экранных процессов.

# screen --help |grep wipe
-wipe         Do nothing, just clean up SockDir.