J'utilisais irssi dans l'écran mais j'ai perdu la connexion. Après avoir rétabli la connexion au serveur, je ne peux plus me connecter à cet écran. screen -ls montre que l'écran est déjà attaché.
J'ai essayé l' écran -D pour forcer le détachement, et il disait détacher mais l'écran -ls dit toujours qu'il est attaché. J'ai essayé l' écran -x et il se bloque juste là.
[sub@server ~]$ screen -ls
There are screens on:
4033.poe (Detached)
7728.irssi (Attached)
2 Sockets in /var/run/screen/S-sub.
Que puis-je faire maintenant?
la source
Vous lui avez donné un nom différent de celui par défaut. Essaye ça:
screen -RD irssi
la source
tu peux essayer:
c'est toujours une bonne idée d'utiliser le nom complet
pid.tty
la source
screen
est connu pour ne pas être rétrocompatible entre les versions. Si la version de ascreen
été mise à jour sur le serveur, il est possible que vous ne puissiez plus vous rattacher à des sessions d'écran plus anciennes.Dans ce cas, vous pouvez soit utiliser l'ancien binaire SCREEN pour le rattacher (à condition que votre gestionnaire de packages de distribution l'ait enregistré quelque part), soit supprimer complètement la session.
la source
J'ai eu un certain succès en envoyant au processus GNU / screen un SIGCHLD (qu'il reçoit normalement quand une fenêtre est fermée), cela l'oblige à toucher (et éventuellement recréer) le fichier socket.
Notez également qu'il existe deux façons d'invoquer l'
screen
exécutable qui ne diffèrent qu'en cas de:SCREEN
le composant côté serveur auquel vous essayez de vous reconnecter, tandis quescreen
le côté client qui mélange les données entre votre terminal et le côté serveur. Donc, vous voudrez peut-être essayer de tuer la version minuscule ...Par exemple, dans ce qui suit, vous pouvez voir que mes processus
screen
etSCREEN
ne sont pas considérés comme des parents et des enfants, indiquant que je me suis attaché à une session existante.Les nouvelles sessions ressemblent plus à ceci:
la source
kill
commande au nom effrayant comme ceci:kill -s SIGCHLD <PID>
où<PID>
est le numéro d'ID de processus (colonne la plus à gauche dans mon exemple de sortie)Cela m'est arrivé pendant que j'utilisais vi où la session s'est figée et je me suis déconnecté. Lorsque vous tentez de rattacher l'écran à l'aide de screen -Arx, le processus se bloque simplement.
Il peut y avoir un processus enfant similaire en cours d'exécution provoquant le blocage de l'écran. Si vous vous en souvenez en particulier, concentrez-vous sur cela, sinon pour obtenir une liste du processus enfant exécuté sous votre écran, procédez comme suit:
Qui montrera les processus enfants imbriqués:
Après avoir tué le processus vi qui a causé le problème en premier lieu, j'ai pu rattacher l'écran sans aucun problème. Tuer tous les processus précédents qui avaient été rattachés à l'écran est également une bonne idée. Utilisez simplement:
Je ne sais pas ce que fait l'écran en interne, pourquoi vi a fait bloquer l'écran, ni pourquoi le fait de tuer le processus vi a ramené mon écran. J'ai rencontré ce problème avec l'écran dans le passé et j'avais essayé ce que la plupart des gens recommandaient dans ce fil sans succès. Trouver ce processus enfant problématique est la seule chose qui a fonctionné pour moi et qui y a travaillé de manière cohérente.
la source
la source
Ça a marché pour moi. J'avais 3 écrans différents et j'ai perdu 3 connexions ssh différentes. Après la reconnexion, les écrans étaient toujours attachés, j'ai émis la commande ci-dessus ... bien sûr, j'ai perdu ma connexion actuelle, mais c'était une nouvelle connexion. Lors de la prochaine reconnexion, chaque écran a été détaché.
Remarque, si vous êtes un superutilisateur, vous devez utiliser l'
--user
option pour ne tuer que vos démons ssh.la source