ユーザーデーモンの再ロードが失敗するのはなぜですか?

ユーザーデーモンの再ロードが失敗するのはなぜですか?

私が行った場合:

sudo systemctl --user daemon-reload

失敗します:

Failed to connect to bus: No such file or directory

これはパッケージのインストールに属するため、「sudo」が必要です。

答え1

ではsudo、root として実行されていますsystemctl --user...ただし、その時点で root がログインしていない場合、root 用のアクティブなユーザーごとの D-Bus インスタンスは存在しません。

実際にログインしているユーザーのみが、ユーザー固有の D-Bus インスタンスを実行できます。suまたは の使用はsudo、この特定の意味では実際のログインと完全に同等であるとは限りません。 Linux ディストリビューションに コマンドがある場合はloginctl、パラメーターを指定せずにこのコマンドを使用して、どのユーザーがアクティブなセッションを持っているかを確認します (アクティブなユーザーごとの D-Bus インスタンスを持っているという意味で)。

このオプションはまたは の--global場合にのみ意味を持ちます。systemctl enablesystemctl disable

現在アクティブなすべてのユーザーのセッションで実行する場合はsystemctl --user daemon-reload、次のようにします。

#!/bin/sh
for reloaduser in $(loginctl --no-legend list-users | awk '{print $2;}')
do
    sudo -u $reloaduser systemctl --user daemon-reload
done

関連情報