Не вдається створити каталог '/ var / run / screen': Дозвіл відхилено


26

Десь, зазвичай після аварії або раптового відключення, screenвідмовляється починати. Такі команди, як

screen
screen -ls
screen -r
screen -d

результатом є наступний вихід

Не вдається створити каталог '/ var / run / screen': Дозвіл відхилено

У чому тут питання? Як я можу це виправити?

Відповіді:


36

Знайдено рішення, яке не потребує регулярного судового запуску

З «Ерік Ма Ма» @ systutorials :

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

На щастя, екран читає змінну середовища, SCREENDIRщоб отримати альтернативний каталог сокетів.

Отже, щоб обійти його, ви можете створити каталог, наприклад ~/.screen:

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

та експортуємо SCREENDIRточку до цього каталогу:

export SCREENDIR=$HOME/.screen

Ви також можете вкласти цю лінію в себе, ~/.bashrcщоб вона також набула чинності згодом.


25

Це питання задокументовано тут . Коротко,

/etc/rcS.d/S70screen-cleanup запускається за допомогою запуску набагато раніше, ніж він очікував запуску, і не вдається правильно очистити цей каталог.

Це можна виправити за допомогою наступної команди

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

1
Це працює, але я повинен запускати його під час кожного запуску, інакше я отримуватиму помилку знову і знову.
Креаз

3

Я зіткнувся з цим під час запуску на базі Centos / RHEL 7 дистрибутива, і в ньому немає нічого, з назвою 'очищення екрана' в будь-якому місці під / тощо.

Я знайшов вирішення, щоб просто бігти, sudo screenа потім негайно вийти з нього.

Після цього мені вдалося запустити екран без будь-яких спеціальних привілеїв, тому, здається, очищати / var / запускати відповідним чином, коли дається можливість.


1

Я можу виправити цю проблему, виконавши наступні команди.

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

1
Це не гарне рішення. Кожен раз, коли ви перезапускаєте, вам доведеться це повторити.
arupgsh

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. Якщо ви хочете використовувати екран у контейнері докера, вам або доведеться запускати systemd у зображенні контейнера, або потрібно запускати systemctl start systemd-tmpfiles-setup.serviceабо /etc/init.d/screen-cleanup start( як запропонував Huey ) кожен раз після входу в ваш контейнер.

Деталі: Оскільки Debian Stretch, сценарій запуску /etc/init.d/screen-cleanupне виконується, тому що за замовчуванням ця послуга маскується ( /lib/systemd/system/screen-cleanup.service -> /dev/null), тому системний ігнорує її.

Натомість systemd-tmpfiles-setup.serviceстворює /run/screenпід час завантаження, як налаштовано /usr/lib/tmpfiles.d/screen-cleanup.conf:d /run/screen 0775 root utmp


Схоже, ви (також) пропонуєте процедуру, яку ОП потрібно буде виконати (вручну) після кожного перезавантаження. Чи можете ви запропонувати постійне рішення, що потрібно було б зробити лише один раз? Будь ласка, не відповідайте на коментарі; відредагуйте свою відповідь, щоб зробити її більш зрозумілою та повною.
Скотт

@Scott, systemctl enable systemd-tmpfiles-setup.serviceякий запропонував @Jacob, зберігається через перезавантаження.
Тагар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.