Por que o recarregamento dos daemons do usuário falha?

Por que o recarregamento dos daemons do usuário falha?

Se eu fizer:

sudo systemctl --user daemon-reload

Falha com:

Failed to connect to bus: No such file or directory

Sendo o "sudo" necessário, pois pertence a uma instalação de pacote.

Responder1

Com sudo, você está executando systemctl --usercomo root... mas se o root não estiver logado no momento, não há nenhuma instância D-Bus ativa por usuário para root.

Somente usuários realmente logados têm uma instância D-Bus específica do usuário em execução. Usar suor sudopode não ser necessariamente equivalente a um login real neste sentido específico. Se sua distribuição Linux tiver o loginctlcomando, use-o sem nenhum parâmetro para ver quais usuários têm sessões ativas (no sentido de que eles têm uma instância D-Bus ativa por usuário).

A --globalopção só tem sentido com systemctl enableou systemctl disable.

Se quiser executar systemctl --user daemon-reloadem todas as sessões de usuários ativos no momento, você pode querer fazer algo assim:

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

informação relacionada