Connexion SSH perdue lors de la mise à niveau du serveur - Comment se reconnecter au processus?


32

Donc, j'effectuais une mise à niveau d'Ubuntu Server de 11.04 à 11.10.

Je l'ai oublié en arrière-plan et mon client SSH a expiré et s'est déconnecté (mastic sous Windows, allez comprendre). La dernière chose sur mon terminal était une question sur la conservation d'une ancienne configuration, etc.

Lorsque je me suis reconnecté au serveur, les fichiers d'aptitude ont été verrouillés par un autre processus, donc je suppose que ce processus de mise à niveau est assis là en attendant mon entrée.

Comment puis-je interagir avec ce processus et poursuivre la mise à niveau? Si possible.

Merci


Réponses:


36

Le processus s'exécute en fait dans une session écran ou byobu en tant qu'utilisateur root. reconnectez-vous au serveur avec du mastic sur le port 22 ou la sécurité intégrée 1022. sudo su - ou su - dans votre compte root et reprenez l'écran avec byobu ou un écran -r et reprenez là où vous êtes parti.

oh et oui j'ai découvert à la dure ;-)


1
Woah merci! J'exécutais en fait une mise à niveau de la version 11.10 à 12.04 dans byobu, puis elle s'est fermée lorsque byobu a été mise à niveau, mais j'ai pu me reconnecter à la session d'écran racine et regarder la mise à niveau se terminer! J'ai presque essayé de tuer la mise à niveau de force, mais heureusement, j'ai lu cette réponse à temps.
Ibrahim

3
Sur une installation au point mort, il a dit que l'écran était déjà attaché, donc je force le détachement de l'écran, je pourrais le rattacher. La commande est screen -D Informations d'ici: kb.iu.edu/data/ahrm.html
David

1
L'utilisation screen -r <id>fonctionne également et il vous suffit de taper quelques caractères de l'ID pour que cela fonctionne.
Daniel

1
Cela ne fonctionne pas pour moi, car il dit que ce screenn'est pas installé.
starbeamrainbowlabs

1
Utilisation plus récente d'Ubuntu sudo screen -D -raprès sudo su -(sinon root).
bshea

34

Tu ne peux pas. Trouvez le processus de mise à niveau en faisant

lsof /var/lib/dpkg/lock

Tuez-le, corrigez toutes les mises à niveau interrompues avec

dpkg --configure --pending

et redémarrez la mise à niveau.


3
Est-ce sûr avec le processus étant un do-release-upgrade?
Stephen Melrose

1
@StephenMelrose Ce n'est jamais sûr. Mais il est raisonnablement sûr et la seule option restante.
Teddy

2
meilleure réponse entre plusieurs sur la façon de corriger une mise à niveau apt-get abandonnée par le délai d'expiration de la session de mastic ... testé avec succès, merci!
Kojo

L' and restart the upgradeétape ne fonctionne pas dans mon cas (j'ai perdu la session ssh pendant le do-release-upgrade14.04 -> 16.04). Ce que je fais à la place comme dernière étape pour terminer la mise à niveau de la version est sudo apt autoremoveet ensuite sudo shutdown -r now.
Ruslan Stelmachenko

J'ai trouvé ici une réponse plus complète que j'ai suivie. La mise à niveau s'est poursuivie automatiquement là où elle s'était arrêtée. askubuntu.com/questions/219545/…
lacostenycoder

4

cryopid (trouvé via cette question ) pourrait aider à moins que "un processus, pas une arborescence de processus" soit un problème dans ce cas.

Les fichiers peuvent être verrouillés car le processus a été tué sans cérémonie et n'a pas eu la chance de se nettoyer après lui-même, alors confirmez que aptitude est toujours en cours d'exécution. Utilisez lsof /var/lib/dpkg/lockcomme suggéré dans la réponse de Teddy pour vérifier - cela vous indiquera le pid pour essayer cryopid aussi.

À l'avenir, je recommande d'essayer de parcourir l'écran autant que possible. J'ai pris l'habitude que l'écran (ou byobu, qui est un écran autour de l'écran qui définit certains comportements utiles) soit la première chose que j'exécute lorsque SSHing n'importe où, puis je peux me reconnecter s'il y a des problèmes. Vous pouvez le configurer pour démarrer ou rattacher automatiquement, même si je n'ai jamais eu l'occasion de le faire n'importe où - il existe un certain nombre d'exemples en ligne ( celui-ci par exemple ) si vous voulez essayer.


1
Soit dit en passant, j'ai préempté cela et fait une mise à niveau de do-release sur ssh en utilisant byobu, mais lorsque byobu a été mis à niveau, il a tué ma session! Je me demande si l'utilisation directe de l'écran aurait empêché cela. Mais l'autre réponse à cette question a répondu à ma situation, il semble que l'installateur soit intelligent et gère sa propre session d'écran de toute façon: D
Ibrahim
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.