Відповіді:
Знайдено рішення, яке не потребує регулярного судового запуску
З «Ерік Ма Ма» @ systutorials :
Каталог
/var/run/screen/
- це каталог сокет для екрана.На щастя, екран читає змінну середовища,
SCREENDIR
щоб отримати альтернативний каталог сокетів.Отже, щоб обійти його, ви можете створити каталог, наприклад
~/.screen
:mkdir ~/.screen && chmod 700 ~/.screen
та експортуємо
SCREENDIR
точку до цього каталогу:export SCREENDIR=$HOME/.screen
Ви також можете вкласти цю лінію в себе,
~/.bashrc
щоб вона також набула чинності згодом.
Це питання задокументовано тут . Коротко,
/etc/rcS.d/S70screen-cleanup
запускається за допомогою запуску набагато раніше, ніж він очікував запуску, і не вдається правильно очистити цей каталог.
Це можна виправити за допомогою наступної команди
sudo /etc/init.d/screen-cleanup start
Я зіткнувся з цим під час запуску на базі Centos / RHEL 7 дистрибутива, і в ньому немає нічого, з назвою 'очищення екрана' в будь-якому місці під / тощо.
Я знайшов вирішення, щоб просто бігти, sudo screen
а потім негайно вийти з нього.
Після цього мені вдалося запустити екран без будь-яких спеціальних привілеїв, тому, здається, очищати / var / запускати відповідним чином, коли дається можливість.
Я можу виправити цю проблему, виконавши наступні команди.
sudo mkdir /var/run/screen
sudo chmod 777 /var/run/screen
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
systemctl enable systemd-tmpfiles-setup.service
який запропонував @Jacob, зберігається через перезавантаження.