Ich habe irssi auf dem Bildschirm verwendet, aber die Verbindung wurde unterbrochen. Nachdem ich wieder auf den Server zurückgeschaltet habe, kann ich keine Verbindung mehr zu diesem Bildschirm herstellen. screen -ls zeigt an, dass der Bildschirm bereits angehängt ist.
Ich habe versucht, screen -D zu aktivieren, um das Entfernen zu erzwingen, und es heißt detach, aber screen -ls sagt immer noch, es sei angehängt. Ich habe screen -x ausprobiert und es hängt einfach da.
[sub@server ~]$ screen -ls
There are screens on:
4033.poe (Detached)
7728.irssi (Attached)
2 Sockets in /var/run/screen/S-sub.
Was kann ich jetzt machen?
quelle
Sie haben ihm einen nicht standardmäßigen Namen gegeben. Versuche dies:
screen -RD irssi
quelle
Du kannst es versuchen:
Es ist immer eine gute Idee, den vollständigen Namen zu verwenden
pid.tty
quelle
screen
ist dafür bekannt, dass es zwischen Versionen nicht abwärtskompatibel ist. Wenn die Version vonscreen
auf dem Server aktualisiert wurde, ist es möglich, dass Sie keine Verbindung mehr zu älteren Bildschirmsitzungen herstellen können.In diesem Fall können Sie entweder die alte SCREEN-Binärdatei zum erneuten Anschließen verwenden (vorausgesetzt, Ihr Distributionspaket-Manager hat sie irgendwo gespeichert) oder die Sitzung vollständig beenden.
quelle
Ich hatte einige Erfolge, als ich dem GNU / screen-Prozess eine SIGCHLD sendete (die normalerweise beim Schließen eines Fensters empfangen wird). Dadurch wird er gezwungen, die Socket-Datei zu berühren (und möglicherweise neu zu erstellen).
Beachten Sie auch, dass es zwei Möglichkeiten gibt, um die
screen
ausführbare Datei aufzurufen, die sich nur für den Fall unterscheiden:SCREEN
Ist die serverseitige Komponente, zu der Sie erneut eine Verbindung herstellen möchten, undscreen
ist die clientseitige Komponente , die Daten zwischen Ihrem Terminal und der serverseitigen Komponente mischt. Vielleicht möchten Sie versuchen, die Kleinbuchstaben-Version zu töten ...Im Folgenden sehen Sie beispielsweise, dass meine
screen
undSCREEN
Prozesse nicht als übergeordnet und untergeordnet betrachtet werden, was darauf hinweist, dass ich einer vorhandenen Sitzung angehängt habe.Neue Sessions sehen ungefähr so aus:
quelle
kill
Befehl wie folgt :kill -s SIGCHLD <PID>
Wo<PID>
ist die Prozess-ID-Nummer (linke Spalte in meiner Beispielausgabe)Dies passierte mir, während ich vi verwendete, wo die Sitzung erstarrte und ich die Verbindung abbrach. Bei dem Versuch, mit screen -Arx erneut eine Verbindung zum Bildschirm herzustellen, blieb der Prozess einfach hängen.
Möglicherweise wird ein ähnlicher untergeordneter Prozess ausgeführt, wodurch der Bildschirm hängen bleibt. Wenn Sie sich an einen erinnern, der sich speziell darauf konzentriert, gehen Sie folgendermaßen vor, um eine Liste der untergeordneten Prozesse zu erhalten, die unter Ihrem Bildschirm ausgeführt werden:
Welche zeigt die verschachtelten untergeordneten Prozesse:
Nachdem ich den vi-Prozess beendet hatte, der das Problem verursacht hatte, konnte ich den Bildschirm ohne Probleme wieder anbringen. Es ist wahrscheinlich auch eine gute Idee, alle vorherigen Prozesse zu beenden, die wieder mit dem Bildschirm verbunden waren. Benutz einfach:
Ich weiß nicht, was der Bildschirm intern macht, warum vi den Bildschirm zum Stillstand brachte oder warum das Beenden des vi-Prozesses meinen Bildschirm zurückbrachte. Ich bin in der Vergangenheit auf dieses Problem mit dem Bildschirm gestoßen und habe versucht, was die meisten Leute in diesem Thread ohne Glück empfehlen. Das Finden dieses Problemkindprozesses ist das einzige, was für mich funktioniert hat und dabei konsequent gearbeitet hat.
quelle
quelle
Es hat bei mir funktioniert. Ich hatte 3 verschiedene Bildschirme und habe 3 verschiedene SSH-Verbindungen verloren. Nach dem erneuten Herstellen der Verbindung waren die Bildschirme noch angeschlossen. Ich habe den obigen Befehl ausgegeben. Natürlich habe ich meine aktuelle Verbindung verloren, aber es war eine neue. Beim nächsten Wiederverbinden wurden alle Bildschirme getrennt.
Wenn Sie ein Superuser sind, sollten Sie die
--user
Option verwenden, um nur Ihre ssh-Daemons zu töten.quelle