无法创建目录‘/var/run/screen’:权限被拒绝

无法创建目录‘/var/run/screen’:权限被拒绝

有时,通常是在崩溃或突然关机后,screen拒绝启动。命令如下

screen
screen -ls
screen -r
screen -d

输出结果如下

无法创建目录‘/var/run/screen’:权限被拒绝

这是什么问题?我该如何修复?

答案1

找到了一个不需要在重启时定期使用 sudo 的解决方案

'Eric Z Ma' @ systutorials

该目录/var/run/screen/是屏幕的套接字目录。

幸运的是,屏幕读取环境变量SCREENDIR来获取备用套接字目录。

因此,为了解决这个问题,您可以创建一个目录,例如~/.screen

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

并导出SCREENDIR指向该目录:

export SCREENDIR=$HOME/.screen

您也可以将此行放入您体内,~/.bashrc以便它随后也会生效。

答案2

此问题已记录在案这里。 简而言之,

/etc/rcS.d/S70screen-cleanup通过 upstart 运行的时间比预期要早得多,并且无法正确清理该目录。

可以使用以下命令修复此问题

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

答案3

就我而言screen-cleanup,在 Debian“buster”10.4 上,该服务被屏蔽了:

$ systemctl is-enabled screen-cleanup.service

masked

$ file /lib/systemd/system/screen-cleanup.service

/lib/systemd/system/screen-cleanup.service: symbolic link to /dev/null

这会导致以下情况:

$ systemctl enable screen-cleanup.service

Synchronizing state of screen-cleanup.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable screen-cleanup
Failed to enable unit: Unit file /lib/systemd/system/screen-cleanup.service is masked.

下面的技巧可以在每次启动时创建运行目录。/dev/null手动删除符号链接(systemctl unmask无效):

rm /lib/systemd/system/screen-cleanup.service

然后启用服务:

systemctl enable screen-cleanup.service

然后启动它:

systemctl start screen-cleanup.service

答案4

我可以通过执行以下命令来解决此问题。

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

相关内容