有时,通常是在崩溃或突然关机后,screen
拒绝启动。命令如下
screen
screen -ls
screen -r
screen -d
输出结果如下
无法创建目录‘/var/run/screen’:权限被拒绝
这是什么问题?我该如何修复?
答案1
找到了一个不需要在重启时定期使用 sudo 的解决方案
该目录
/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