
私が行った場合:
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 enable
systemctl 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