【问题标题】:systemctl show does not show several propertiessystemctl show 不显示几个属性
【发布时间】:2017-04-07 15:23:05
【问题描述】:

我正在使用 systemctl 使用命令 systemctl show ssh.service -p EnvironmentFile 从 ssh.service 单元文件中获取 EnvironmentFile 属性的值,但它返回空结果。

单元文件本身包含此属性。例如我的单元文件是这样的(cat /lib/systemd/system/ssh.service):

[Unit]
Description=OpenBSD Secure Shell server
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify

[Install]
WantedBy=multi-user.target
Alias=sshd.service

此外,如果我这样做 systemctl show ssh.service | grep EnvironmentFile 我会得到:

EnvironmentFile=/etc/default/ssh (ignore_errors=yes)

几乎所有其他属性都按预期工作,例如systemctl show ssh.service -p After 返回扩展依赖项:

After=network.target auditd.service systemd-journald.socket basic.target sysinit.target system.slice

属性 ConditionPathExists 存在同样的问题,但在这种情况下,即使 grep 也不会显示此属性(systemctl show ssh.service | grep ConditionPathExists 什么也不打印)。

为什么会这样?以及如何在不使用grep 的情况下从单元文件中获取 EnvironmentFile 属性?

【问题讨论】:

    标签: linux systemd systemctl


    【解决方案1】:

    我已经重现了 systemd 229 中缺少 EnvironmentFile 的问题,并交叉引用了 systemctl 的文档以及 systemd 最新版本中的 NEWS 文件,以查看是否有提及这种行为正在改变。没有。

    这似乎是systemd 中的一个错误。在查看 show 和 --property 的文档时,systemctl 的文档暗示这将起作用。正如您所指出的,如果您 grep,该属性肯定存在。

    我鼓励您搜索existing open issues for systemd,看看是否已经存在一个未解决的问题。如果没有,请打开一个新的问题报告。

    如果行为按预期工作,则应更新 man systemctl 文档以澄清这一点。

    【讨论】:

      【解决方案2】:

      根据Mark Stosberg 的建议,我尝试搜索与此问题相关的未解决问题,我发现one 描述了与 Environment* 属性有关的错误自动完成行为。

      使用 busctl 我发现实际的属性名称是 EnvironmentFiles (busctl introspect org.freedesktop.systemd1 /org/freedesktop/systemd1/unit/ssh_2eservice | grep EnvironmentFile):

      .EnvironmentFiles                   property  a(sb)          1 "/etc/default/ssh" true                const
      

      因此,如果您需要从 systemctl 获取此属性,则必须执行 systemctl show -p EnvironmentFiles ssh.service(以下输出):

      EnvironmentFile=/etc/default/ssh (ignore_errors=yes)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 1970-01-01
        相关资源
        最近更新 更多