【发布时间】: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 属性?
【问题讨论】: