systemctl,如何揭露

systemctl,如何揭露
root@gcomputer:~# systemctl status x11-common
● x11-common.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)

我尝试过systemctl unmask x11-commonsystemctl 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

请按照以下步骤操作:

  1. systemctl edit systemd-hostnamed

    添加以下两行然后退出编辑器(出现提示时不要忘记保存):

    [Service]
    PrivateNetwork=no
    
  2. 这将在目录中创建一个包含上述两行内容的 override.conf 文件:

    /etc/systemd/system/systemd-hostnamed.service.d/
    
  3. 更新systemd:

    systemctl daemon-reload
    
  4. 然后重启服务:

    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 是否为空文件。如果是,请将其删除。然后服务应该会被取消屏蔽。

相关内容