Відповіді:
Знайдено рішення, яке не потребує регулярного судового запуску
З «Ерік Ма Ма» @ 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, зберігається через перезавантаження.