22
0
Fork 0

ajout d'infos suite à un souci rencontré

This commit is contained in:
gcolpart 2017-07-18 09:00:43 +02:00
parent 64f17bda2c
commit f342a8b345
1 changed files with 44 additions and 0 deletions

View File

@ -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