Answers:
找到了一个在重启时不需要定期sudo的解决方案
该目录
/var/run/screen/
是屏幕的套接字目录。幸运的是,屏幕读取环境变量
SCREENDIR
以获取备用套接字目录。因此,要解决它,您可以创建一个目录,例如
~/.screen
:mkdir ~/.screen && chmod 700 ~/.screen
并导出
SCREENDIR
指向该目录:export SCREENDIR=$HOME/.screen
您也可以将此行放入您的行中,
~/.bashrc
以便之后也能生效。
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
。如果您想在docker容器中使用screen,那么您必须在容器映像中运行systemd,或者每次登录容器后都必须运行systemctl start systemd-tmpfiles-setup.service
或/etc/init.d/screen-cleanup start
(如Huey所建议的那样)。
详细信息:自Debian Stretch以来,启动脚本/etc/init.d/screen-cleanup
未执行,因为默认情况下此服务是masked(/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
systemctl enable systemd-tmpfiles-setup.service
认为@Jacob建议在重新启动时保持不变。
我可以通过执行以下命令来解决此问题。
sudo mkdir /var/run/screen
sudo chmod 777 /var/run/screen