From f342a8b34521a79b15cc65baf11f90bcaafa1807 Mon Sep 17 00:00:00 2001 From: gcolpart Date: Tue, 18 Jul 2017 09:00:43 +0200 Subject: [PATCH] =?UTF-8?q?ajout=20d'infos=20suite=20=C3=A0=20un=20souci?= =?UTF-8?q?=20rencontr=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoSystemd.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/HowtoSystemd.md b/HowtoSystemd.md index da23c5b2..0c536fbc 100644 --- a/HowtoSystemd.md +++ b/HowtoSystemd.md @@ -419,3 +419,47 @@ systemd prend en compte les scripts dans `/etc/init.d/` : * les scripts « classiques » sont pris en compte si il n'existe pas d'unité systemd avec le même nom (sa description commence alors par **LSB:**) * certains scripts sont juste là par compatibilité afin de pouvoir faire `/etc/init.d/foo start/stop/restart/status` mais c'est en fait l'unité systemd qui est prise en compte + + +### Failed to get D-Bus connection: No such file or directory + +Si en tant qu'utilisateur, on obtient l'erreur : + +~~~ +$ systemctl --user status +Failed to get D-Bus connection: No such file or directory +~~~ + +S'assurer que l'on a bien une variable d'environnement du type : + +~~~ +XDG_RUNTIME_DIR=/run/user/1042 +~~~ + +Avec un _strace_ on devrait voir quelque chose comme : + +~~~ +$ strace systemctl --user status +connect(3, {sa_family=AF_LOCAL, sun_path="/run/user/1042/systemd/private"}, 32) = -1 ECONNREFUSED (Connection refused) +connect(3, {sa_family=AF_LOCAL, sun_path="/run/user/1042/bus"}, 20) = -1 ENOENT (No such file or directory) +~~~ + +C'est surtout le premier élément qui est intéressant. _systemd_ doit maintenir des sockets Unix fonctionnelles quand un utilisateur est logué : + +~~~ +$ lsof | grep /run/user/1042 +systemd 844 foo 11u unix 0xffff88082dbb9480 0t0 69531078 /run/user/1042/systemd/notify +systemd 844 foo 12u unix 0xffff88082dbb9c00 0t0 69531080 /run/user/1042/systemd/private +~~~ + +Pour le forcer à les récréer on pourra tester dans l'ordre : + +* la commande `loginctl enable-linger foo` pour les rendre persistantes et voir l'effet (qui à désactiver après) +* mv /var/lib/systemd/linger/foo /tmp puis `loginctl enable-linger foo` +* mv /run/user/1042 puis `loginctl enable-linger foo` +* redémarrer dbus : systemctl restart dbus +* redémarrer systemd-logind : systemctl restart systemd-logind +* stopper tous les process de l'utilisateur (voir avec lsof) puis se loguer "proprement" avec ssh ou login (et non pas sudo ou su) + +* se loguer +