systemd:如何取消屏蔽单元文件为空的服务?

use*_*141 8 arch-linux systemd network-interface

我尝试启动wpa_supplicant.service,但出现以下错误:

启动 wpa_supplicant.service 失败:单元 wpa_supplicant.service 被屏蔽。

我尝试使用 揭开它systemctl unmask wpa_supplicant.service,但它似乎没有改变任何东西。

systemctl status wpa_supplicant.service
Run Code Online (Sandbox Code Playgroud)

返回

加载:屏蔽(/usr/lib/systemd/system/wpa_supplicaant.service;屏蔽;供应商预设:禁用)活动:不活动(死)

看起来很奇怪的是,当我检查wpa_supplicant.service文件时,它是一个空文件。
如何取消屏蔽服务?

小智 7

8 条评论,没有答案 - 真的,伙计们,专注于这个问题。如何揭开 systemd 服务的掩码!!!!您可以尝试systemctl unmask your_app.service,但如果您的服务链接已被符号链接到/dev/null,则此操作将失败。以下是推荐的流程:

  1. 检查单元文件是否是指向/dev/null以下内容的符号链接:

    file /lib/systemd/system/your_app.service
    OR
    file /etc/systemd/system/your_app.service
    
    Run Code Online (Sandbox Code Playgroud)

    它应该返回:

    /lib/systemd/system/your_app.service: symbolic link to /dev/null
    
    Run Code Online (Sandbox Code Playgroud)
  2. 删除符号链接:

    sudo rm /lib/systemd/system/your_app.service
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在更改服务时重新加载 systemd 守护进程:

    sudo systemctl daemon-reload
    
    Run Code Online (Sandbox Code Playgroud)
  4. 检查状态:

    systemctl status your_app
    
    Run Code Online (Sandbox Code Playgroud)

愉快的主持:)

  • 如果您费心阅读这些评论而不是“专注于(专门)问题”,您就会知道您的答案不适用于这里...... (5认同)

小智 6

空(0 字节)的服务单元将被解析systemd为掩码。虽然systemctl mask <unit>通过将服务符号链接到 来工作/dev/null,但 systemd 似乎只是在读取文件时检查文件是否为 0 字节以确定单元是否被屏蔽。这会导致关于屏蔽服务的误导性消息。
您需要弄清楚为什么服务单元是空的。

至于如何去揭穿它的单元文件是空的服务...你“UNMASK”通过使单位非空,这将是依赖于服务,为什么单位是空的。