
Si lo hago:
sudo systemctl --user daemon-reload
Falla con:
Failed to connect to bus: No such file or directory
Siendo necesario el "sudo", ya que este pertenece a la instalación de un paquete.
Respuesta1
Con sudo
, está ejecutando systemctl --user
como root... pero si root no ha iniciado sesión en ese momento, no hay ninguna instancia D-Bus activa por usuario para root.
Sólo los usuarios que han iniciado sesión tienen en ejecución una instancia de D-Bus específica del usuario. Usar su
o sudo
no necesariamente puede ser totalmente equivalente a un inicio de sesión real en este sentido particular. Si su distribución de Linux tiene el loginctl
comando, utilícelo sin ningún parámetro para ver qué usuarios tienen sesiones activas (en el sentido de que tienen una instancia D-Bus activa por usuario).
La --global
opción sólo tiene sentido con systemctl enable
o systemctl disable
.
Si desea ejecutar systemctl --user daemon-reload
todas las sesiones de los usuarios actualmente activos, es posible que desee hacer algo como esto:
#!/bin/sh
for reloaduser in $(loginctl --no-legend list-users | awk '{print $2;}')
do
sudo -u $reloaduser systemctl --user daemon-reload
done