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)デバイスをロードするかどうかを示していないようですが、ロードするのは妥当な推測です。

おすすめ記事