13

Иногда, обычно после сбоя или внезапного выключения, screen отказывается запускаться. Команды как

screen
screen -ls
screen -r
screen -d

результат в следующем выводе

Невозможно создать каталог '/var/run/screen': разрешение запрещено

В чем здесь проблема? Как я могу это исправить?

5 ответов5

17

Нашел решение, которое не требует регулярного sudo при перезагрузках

Из «Эрик З Ма» @ systutorials:

Каталог /var/run/screen/ - это каталог сокетов для экрана.

К счастью, screen читает переменную окружения SCREENDIR чтобы получить альтернативный каталог сокетов.

Чтобы обойти это, вы можете создать каталог, например ~/.screen:

mkdir ~/.screen && chmod 700 ~/.screen

и экспортируйте SCREENDIR чтобы указать на этот каталог:

export SCREENDIR=$HOME/.screen

Вы также можете поместить эту строку в себя ~/.bashrc чтобы она впоследствии вступила в силу.

16

Эта проблема была задокументирована здесь. Короче,

/etc/rcS.d/S70screen-cleanup запускается через upstart намного раньше, чем ожидалось , и не может правильно очистить этот каталог.

Это можно исправить с помощью следующей команды

sudo /etc/init.d/screen-cleanup start
1

Я столкнулся с этим во время работы дистрибутива на основе Centos / RHEL 7, и в нем нет ничего с именем 'screen-cleanup' в каталоге / etc.

Обходной путь, который я нашел, состоял в том, чтобы просто запустить sudo screen и затем немедленно выйти из него.

После этого я смог запустить экран без каких-либо особых привилегий, так что он, кажется, очищает /var / runuprorly, когда есть такая возможность.

0

Я могу решить эту проблему, выполнив следующие команды.

sudo mkdir /var/run/screen
sudo chmod 777 /var/run/screen
0

TL; DR: в Debian Stretch и более поздних версиях убедитесь, что systemd-tmpfiles-setup.service был успешно запущен:

$:> systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: enabled)
   Active: active (exited) since Thu 2018-06-21 19:54:06 CEST; 41min ago
   ...

Если отключено (Loaded: ... ;disabled; ...), то вы можете включить его с помощью systemctl enable systemd-tmpfiles-setup.service . Если вы хотите использовать screen в док-контейнере, то вы должны либо запустить systemd в образе вашего контейнера, либо запустить systemctl start systemd-tmpfiles-setup.service или /etc/init.d/screen-cleanup start (как предложенный Хьюи) каждый раз после входа в ваш контейнер.

Подробности: Начиная с Debian Stretch, скрипт запуска /etc/init.d/screen-cleanup не выполняется, потому что по умолчанию этот сервис маскируется (/lib/systemd/system/screen-cleanup.service -> /dev/null), поэтому systemd игнорирует это.

Вместо этого systemd-tmpfiles-setup.service создает /run/screen при загрузке, как настроено в /usr/lib/tmpfiles.d/screen-cleanup.conf: d /run/screen 0775 root utmp

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .