
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 --user
como 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 su
or sudo
pode não ser necessariamente equivalente a um login real neste sentido específico. Se sua distribuição Linux tiver o loginctl
comando, 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 --global
opção só tem sentido com systemctl enable
ou systemctl disable
.
Se quiser executar systemctl --user daemon-reload
em 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