Ich habe mich zuvor wieder mit einer lang laufenden Bildschirmsitzung verbunden screen -dr control
. Manchmal wird dieser Befehl jedoch nicht wieder mit dem Bildschirm verbunden und bleibt für immer hängen (mehr als 10 Minuten, danach habe ich abgebrochen). Dies geschieht nur, wenn die SSH-Verbindung unerwartet getrennt wird und nicht, wenn der Bildschirm ordnungsgemäß getrennt ist Ctrl-A d
. Andere Schalter, wie zB screen -x
oder screen -D -RR
auch nicht funktionieren.
In diesem Beitrag wird vorgeschlagen , den PTY zu beenden, der die Bildschirmsitzung enthält, wodurch die Trennung des Bildschirms abgeschlossen wird. Es tötet jedoch einfach die Shell, von der screen -dr control
aufgerufen wurde.
Beispielsweise:
$ ps -ef | grep control | grep -v grep
nomad 7387 7109 0 13:05 pts/50 00:00:00 screen -dr control
nomad 15299 1 0 Nov27 ? 00:13:47 SCREEN -S control
$ ps -ef | grep bash | grep 'pts/50'
nomad 7109 7108 0 12:49 pts/50 00:00:00 -bash
Der verlinkte Beitrag schlägt vor, den bash
Prozess mit PID 7109 abzubrechen. Dadurch wird auch der screen -dr control
Prozess mit PID 7387 abgebrochen. Danach kann ich immer noch keine Verbindung zum Bildschirm herstellen.
Der Prozess, SCREEN -S control
der die Bildschirmsitzung gestartet hat init
, ist der übergeordnete Prozess , den ich offensichtlich nicht beenden kann.
Gibt es eine Möglichkeit, die Sitzung mit dem nicht reagierenden Bildschirm wiederherzustellen?
Update: Dies geschieht unter CentOS 6.4 mit Kernel 2.6.32-358.6.1.el6.x86_64. Die Shells sind alle bash Version 4.1.2 (1) -release.
quelle
screen -ls
in diesen "hängenden" Fällen?screen -d -r <session>
bedeutet "abnehmen und wiederherstellen", daher sollte es keine Rolle spielen, wenn Sie es nicht aus erster Hand abgenommen haben. (Und dafür tut es oft nicht ...)Antworten:
Ich denke, du solltest es versuchen
Auch beim nächsten Mal sollte der verärgerte Aufruf (in Großbuchstaben) dazu führen, dass die Verbindung zu der anderen Sitzung unterbrochen wird, die von Ihrem zwischengeschalteten Netcat-Hop gehalten wird.
quelle
Wie von Jens Timmerman vorgeschlagen, war der ultimative Grund für dieses seltsame Verhalten, dass ich mit SSH ProxyCommand und eine Verbindung zum Remoteserver herstellte
ncat
. Nachdemncat
ich das auf dem Zwischencomputer beendet habe, kann ich mich wieder an die Bildschirmsitzung anschließen.quelle
Wenn dies ein häufiges Problem ist, können Sie auch in Betracht ziehen, mosh als SSH-Ersatz zu verwenden:
http://mosh.mit.edu
quelle