systemctl,如何取消屏蔽

Alb*_*ert 37 systemd

root@gcomputer:~# systemctl status x11-common
? x11-common.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)
Run Code Online (Sandbox Code Playgroud)

我试过了systemctl unmask x11-commonsystemctl unmask x11-common.service但这并没有改变任何东西。

我如何揭开它的面纱?

Zan*_*nna 45

您使用的命令都是正确的。另请参阅手册

看来unmask当存在比符号链接到其他系统中没有现有单元文件命令失败/dev/null。如果你mask是一个服务,那么它会创建一个新的符号链接,systemd/dev/null/etc/systemd/system其中查找要在启动时加载的单元文件。在这种情况下,没有真正的单元文件。

其他人似乎也有类似的问题

x11-common.service在我的系统上也被屏蔽了。你可以像这样修复它:

首先检查单元文件是否是到的符号链接 /dev/null

file /lib/systemd/system/x11-common.service
Run Code Online (Sandbox Code Playgroud)

它应该返回:

/lib/systemd/system/x11-common.service: symbolic link to /dev/null
Run Code Online (Sandbox Code Playgroud)

在这种情况下,删除它

sudo rm /lib/systemd/system/x11-common.service
Run Code Online (Sandbox Code Playgroud)

由于您更改了单元文件,因此您需要运行以下命令:

sudo systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)

现在检查状态:

systemctl status x11-common
Run Code Online (Sandbox Code Playgroud)

如果没有显示加载并运行(如果圆圈仍然是红色),请重新安装包:

sudo apt-get install --reinstall x11-common
Run Code Online (Sandbox Code Playgroud)

并再次重新加载守护进程

sudo systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)

并再次检查状态

systemctl status x11-common
Run Code Online (Sandbox Code Playgroud)

现在它是绿色的并且正在运行 :) 该服务没有 systemd 单元文件,但是 systemd 很高兴地使用脚本来/etc/init.d代替它。