Când gnome-shell
se blochează pe Linux Mint 12, de obicei apare din nou în câteva secunde. Când nu este, se pare că ia daemon-ul cu chei, pentru că după repornirea cu
while true; do DISPLAY=:0 gnome-shell --replace; done &
solicită expresia de acces cheie de fiecare dată când rulez comenzi precum git pull
. Cum pot reporni daemon-ul cu chei (dacă asta este problema aici) la repornirea gnome-shell
?
Răspuns
ACTUALIZARE: Aceste instrucțiuni pot fi învechite. Apare pe sistemele recente mufele gnome-keyring mutate formează un director aleatoriu în ~/.cache/
în /run/user/<ID>/keyring/
(la cel puțin pe Debian Jessie), deci o repornire simplă ar trebui să fie suficientă.
Este „puțin dificil, deoarece gnome-keyring-daemon stabilește parametri de mediu unici înainte ca sesiunea dvs. să înceapă și acest mediu este utilizat pentru a accesa canalul de daemon un socket. Mediul este copiat în fiecare aplicație, deci nu există nicio modalitate de a restabili toate variabilele de mediu mod care implică repornirea manuală a daemonului, legarea simbolică a vechiului dir la cel nou (deci vechiul mediu funcționează în continuare) și apoi pornirea serviciilor individuale.
-
Asigurați-vă că nu există gnome- keyring-daemon rulează (această comandă nu ar trebui să returneze niciun pid, dacă este nevoie să o omori)
pgrep -f gnome-keyring-daemon
-
Ștergeți cheia veche sockets
rm -rf ~/.cache/keyring-*
-
Porniți procesul daemon – folosim setsid și redirecționăm SDTIN, OUT & ERR, deci nu există nicio asociere la shell / tty. Aceasta va crea un nou director cu socketul de control în ~ / .cache /.
setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1
-
Asociați noul director socket la vechiul unul (în mod ideal, înlocuiți wildcard-ul cu directorul real, dar din moment ce le-am eliminat mai devreme ar trebui să existe doar unul):
ln -s ~/.cache/keyring-* $GNOME_KEYRING_CONTROL
NB: Nu am problema dvs. cu gnome-shell, dar dacă nu aveți aceste variabile exportate de unde porniți gnome-shell vă mulți trebuie să treceți manual următoarele variabile de mediu către gnome-shell:
GPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK
. Ar trebui să puteți obține valoarea din calea ștearsă în # 2 (dacă aveți mai multe directoare, trebuie să le căutați pe cele mai recente). -
Porniți celălalt gnome- servicii keyring (se vor conecta la daemon folosind soclul și vor activa serviciile de pe acesta dacă totul a mers bine până acum):
/usr/bin/gnome-keyring-daemon --start --components=pkcs11 /usr/bin/gnome-keyring-daemon --start --components=gpg /usr/bin/gnome-keyring-daemon --start --components=ssh
Aceste ultime comenzi vor fi tipărite variabile de mediu … le puteți ignora, asigurați-vă că nu există erori de conexiune la socket.
De asemenea, dacă doriți să curățați socket-urile vechi, puteți adăuga un @reboot
intrare cron care face o curățare:
find ~/.cache/ -maxdepth 1 -type l -name "keyring-*" -delete
Comentarii
Răspuns
Aceasta ar trebui să efectueze o repornire curată a demonului:
gnome-keyring-daemon -r -d
Sursă: ArchLinux
Comentarii
- A funcționat perfect pe Mint 18 (Sarah). Mulțumesc!
- Ați lucrat în Ubuntu 18.04, mulțumesc!
~/.cache/
, astfel încât acești pași să poată fi omiți; doar uciderea șisetsid
relansarea au fost suficiente. Următorul loginssh
mi-a cerut parola corect și a fost stocată în cache, așa cum era de așteptat.