解析systemd别名(服务名)

Resolve systemd alias (service name)

Systemd 支持别名。例如"httpd.service"

ls -l /etc/systemd/system/httpd.service
  /etc/systemd/system/httpd.service -> /usr/lib/systemd/system/apache2.service

此文件的内容:

[Unit]
Description=The Apache Webserver
...
[Install]
WantedBy=multi-user.target
Alias=httpd.service apache.service

我想在脚本中解析别名。

示例:

如果输入是"httpd.service",那么输出应该是"apache2.service"

我可以为这个脚本使用 shell 或 python。

如何以 systemd 方式执行此操作?

读取符号链接可能有效,但我想有更正式的方法来解析别名。

您应该要求别名服务Id 属性

> systemctl show -p Id --value httpd.service
apache2.service

您还可以查询 Names 属性

> systemctl show -p Names --value httpd.service
httpd.service apache2.service