Systemd DBus API는 비활성화된 서비스에 대해 언로드된 서비스를 반환합니다.

Systemd DBus API는 비활성화된 서비스에 대해 언로드된 서비스를 반환합니다.

D-Bus 인터페이스에서 systemd 서비스를 시작하고 싶습니다. 그러나 Systemd D-Bus 인터페이스는 아직 시작되지 않았거나 "활성화"(부팅 시 실행)되지 않은 서비스를 인식하지 못하는 것 같습니다.

# my-service.service
[Unit]
Description=My service

[Service]
Type=simple
ExecStart=/usr/local/bin/my-service

[Install]
WantedBy=multi-user.target
> systemctl status my-service
● my-service.service - My service
     Loaded: loaded (/usr/local/lib/systemd/system/my-service.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

> gdbus call --system --dest org.freedesktop.systemd1 -o /org/freedesktop/systemd1 -m org.freedesktop.systemd1.Manager.GetUnit my-service.service
Erreur : GDBus.Error:org.freedesktop.systemd1.NoSuchUnit: Unit my-service.service not loaded.

> systemctl enable my-service.service
Created symlink /etc/systemd/system/multi-user.target.wants/my-service.service → /usr/local/lib/systemd/system/my-service.service.

> gdbus call --system --dest org.freedesktop.systemd1 -o /org/freedesktop/systemd1 -m org.freedesktop.systemd1.Manager.GetUnit my-service.service
(objectpath '/org/freedesktop/systemd1/unit/my_2dservice_2eservice',)

systemctl을 사용하여 my-service를 시작할 수 있지만 D-Bus를 통해 액세스할 수는 없습니다. D-Bus 인터페이스를 사용하여 systemctl비활성화된 서비스를 시작하는 방법은 무엇입니까?

답변1

~에 따르면systemd D-Bus 인터페이스 문서LoadUnit(name), 장치 정보를 가져와서 디스크에서 로드할 수 있는 방법이 있습니까 (아직 로드하지 않은 경우).

또한 이 메서드는 StartUnit(name, mode)장치를 로드하는지 여부를 나타내지 않는 것 같지만 로드하는 것이 타당한 추측입니다.

관련 정보