root@gcomputer:~# systemctl status x11-common
● x11-common.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)
我尝试过systemctl unmask x11-common
,systemctl unmask x11-common.service
但没有任何改变。
我怎样才能揭开它的面纱?
答案1
unmask
如果系统中没有除符号链接之外的现有单元文件,则命令似乎会失败/dev/null
。如果您是mask
服务,则会创建一个新的符号链接, systemd 会/dev/null
在/etc/systemd/system
其中查找要在启动时加载的单元文件。在这种情况下,没有真正的单元文件。
x11-common.service
在我的系统上也被屏蔽了。你可以像这样修复它:
首先检查单元文件是否是指向/dev/null
file /lib/systemd/system/x11-common.service
它应该返回:
/lib/systemd/system/x11-common.service: symbolic link to /dev/null
在这种情况下,删除它
sudo rm /lib/systemd/system/x11-common.service
由于您更改了单元文件,因此您需要运行以下命令:
sudo systemctl daemon-reload
现在检查状态:
systemctl status x11-common
如果没有显示已加载并正在运行(如果圆圈仍然是红色),请重新安装包:
sudo apt-get install --reinstall x11-common
并重新加载守护进程
sudo systemctl daemon-reload
并再次检查状态
systemctl status x11-common
现在它是绿色的并且正在运行:)该服务没有 systemd 单元文件,但是 systemd 很乐意使用它的脚本/etc/init.d
。
答案2
这里我展示了如何使用 systemctl 删除掩码
$ sudo systemctl status bluetooth.service
● bluetooth.service
Loaded: masked (Reason: Unit bluetooth.service is masked.)
Active: inactive (dead)
$ sudo systemctl unmask bluetooth.service
Removed /etc/systemd/system/bluetooth.service.
$ sudo systemctl status bluetooth.service
● bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth.service; disabled; vendor preset: e>
Active: inactive (dead)
Docs: man:bluetoothd(8)
$ sudo systemctl start bluetooth.service
$ sudo systemctl status bluetooth.service
● bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth.service; disabled; vendor preset: e>
Active: active (running) since Sat 2022-07-30 08:50:04 +06; 2s ago
Docs: man:bluetoothd(8)
Main PID: 23191 (bluetoothd)
Status: "Running"
Tasks: 1 (limit: 9135)
Memory: 1.6M
CGroup: /system.slice/bluetooth.service
└─23191 /usr/lib/bluetooth/bluetoothd
答案3
请按照以下步骤操作:
systemctl edit systemd-hostnamed
添加以下两行然后退出编辑器(出现提示时不要忘记保存):
[Service] PrivateNetwork=no
这将在目录中创建一个包含上述两行内容的 override.conf 文件:
/etc/systemd/system/systemd-hostnamed.service.d/
更新systemd:
systemctl daemon-reload
然后重启服务:
systemctl restart systemd-hostnamed
现在您应该可以正常运行hostnamectl
而不会挂起。
答案4
您的服务可能有一个空的覆盖文件,如下所示:
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; masked; vendor preset: enabled)
Drop-In: /etc/systemd/system/redis-server.service.d
└─limit.conf
检查 limit.conf 是否为空文件。如果是,请将其删除。然后服务应该会被取消屏蔽。