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

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

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

无法启动 wpa_supplicant.service:单元 wpa_supplicant.service 被屏蔽。

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

systemctl status wpa_supplicant.service

回报

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

真正奇怪的是,当我检查该wpa_supplicant.service文件时,它是一个空文档。
我怎样才能揭开服务的面纱?

答案1

8 条评论,没有答案 - 真的,伙计们,专注于问题。如何揭开系统服务的面具!!!!您可以尝试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
    

    它应该返回:

    /lib/systemd/system/your_app.service: symbolic link to /dev/null
    
  2. 删除符号链接:

    sudo rm /lib/systemd/system/your_app.service
    
  3. 当您更改服务时重新加载 systemd 守护进程:

    sudo systemctl daemon-reload
    
  4. 检查状态:

    systemctl status your_app
    

祝您主持愉快:)

答案2

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

至于如何取消屏蔽单元文件为空的服务...您可以通过使单元非空来“取消屏蔽”服务,这将取决于为什么该单元是空的。

相关内容