Ich habe das Büro früher mit einem aktiven Terminalfenster verlassen, in dem ein Skript auf einem Centos 7-Server ausgeführt wird. Jetzt habe ich SSHing von zu Hause aus und ich möchte sehen, wo es hin muss. Ist das möglich? Kann ich von hier aus wieder zum selben Terminalfenster wechseln?
8
strace -e write -p 12345
(Ersetzen Sie die PID des Prozesses, an dem Sie interessiert sind). Eine andere Option ist:strace -e read -p 12345
(Ersetzen Sie die PID des Terminalemulators). Im Prinzip wäre es möglich, ein Programm zu schreiben, um denptrace
Systemaufruf zu verwenden, um die Informationen auf die gleiche Weise zu sammelnstrace
, und sie direkt auf sein eigenes Terminal zu schreiben. Ich weiß nicht, ob ein solches Programm existiert, aber es würde die in Ihrer Frage angegebenen Anforderungen abdecken.Antworten:
Wie bereits erwähnt, ist die beste Option die Verwendung von
screen
odertmux
. Dies sind Werkzeuge, die als "Terminal-Multiplexer" bekannt sind. Mit ihnen können Sie Shell-Sitzungen erstellen, die an tatsächliche Anmeldungen angehängt und von diesen getrennt werden können. Diese Tools sind nicht nur nützlich, um Ihre Arbeit von einem anderen Terminal aus zu überprüfen, sondern bieten auch andere Funktionen, z. B. die Freigabe Ihrer Sitzung für einen anderen Benutzer und die Sicherstellung, dass Ihr Befehl nicht beendet wird, wenn Sie Ihre Internetverbindung verlieren. Wenn Sie suchenscreen
, können Sie versuchen, nach "GNU Screen" zu suchen. Beide Tools sind auf den meisten Linux-Systemen verfügbar.Normalerweise starten Sie die Sitzung und führen dann Ihren Befehl innerhalb dieser Sitzung aus. Wenn Sie den Befehl jedoch bereits gestartet haben, möchten Sie möglicherweise einen Artikel zum Verschieben eines laufenden Befehls in eine Bildschirmsitzung nachschlagen. Ich würde jedoch nicht empfehlen, dies beim ersten Mal an etwas Wichtigem auszuprobieren. Diese Frage kann von Nutzen sein:
Verschieben eines bereits laufenden Prozesses auf Bildschirm
Wenn Sie nur überprüfen möchten, ob der Prozess ausgeführt wird, ist strace mein Lieblingswerkzeug. Mit diesem Tool können Sie jeden Kernelaufruf anzeigen, der von einem Prozess ausgeführt wird. Es kann einige Fähigkeiten erfordern, um die Ausgabe zu verstehen, aber es sollte Ihnen zumindest eine Vorstellung davon geben, ob der Prozess ausgeführt wird, und wenn Sie genau genug hinschauen, werden möglicherweise die Dateinamen abgefangen, die er öffnet. Um dies zu tun, suchen Sie zuerst die PID, möglicherweise durch Durchsuchen
ps aux|grep yourcommand
, und dann:Sie können ^ C, um da rauszukommen. Möglicherweise können Sie keine erneute Verbindung herstellen, aber wenn Sie nur wissen möchten, was es tut, sollte dies ausreichen.
quelle
Ein Weg, dies zu tun: TMUX
Wie in den meisten Antworten bereits erwähnt, verwenden Sie
tmux
(oderscreen
) den Befehl, wenn er sich in einer vorhandenen SSH-Sitzung befindetSie befinden sich jetzt in einer neuen Bash-Sitzung, in der Sie Ihr Programm / Ihren Befehl starten können. Sie können es jederzeit schließen (jedoch nicht mit STRG + D, sondern durch Schließen des Fensters) und später zurückkehren, indem Sie eine SSH-Verbindung zu demselben Benutzer auf demselben Computer herstellen und den Befehl schreiben
Sie können auch mehrere
tmux
Sitzungen abhalten, indem Sie ihnen Namen gebenSie können eine Liste aller offenen
tmux
Sitzungen für Ihren Benutzer mit anzeigenund an eine benannte
tmux
Sitzung mit anhängenFinden Sie ein umfassendes
tmux cheat sheet
hier .Für ein laufendes Programm
Die bisherigen Antworten scheinen sich der Tatsache nicht bewusst zu sein, dass Sie einen bereits laufenden Prozess auf einen anderen verschieben können
tmux
/screen
wie diese Antwort zeigt. Das Programm, das den Job erledigt, heißtreptyr
und unter Ubuntu / Debian können Sie es mit einem einfachen installierenErmitteln Sie anschließend die Prozess-ID Ihres laufenden Programms (z. B. mit
top
oderhtop
), starten Sie einetmux
Sitzung und eine einfacheverbindet den laufenden Prozess erneut mit Ihrer
tmux
Bash-Sitzung.quelle
In Zukunft können Sie
screen
odertmux
und können dann eine laufende Sitzung erneut zuordnen.quelle
Ich habe Byobu benutzt und finde es unglaublich mächtig. Byobu ist ein textbasierter GPLv3-Open-Source-Fenstermanager und Terminal-Multiplexer.
Sie können also eine Byobu-Sitzung eröffnen, indem Sie einfach "Byobu" eingeben. Anschließend können Sie mit Strg + F2 eine neue Registerkarte erstellen und zwischen den Registerkarten mit Strg + F3 für Zurück und Strg + F4 für Vorwärts wechseln. Sie können eine Registerkarte mit Strg + F6 schließen oder mit Umschalt + F6 von einer Sitzung trennen. Sie können die Sitzung später erneut verbinden, indem Sie einfach erneut "byobu" eingeben.
Byobu unterstützt vertikale und horizontale Teilungen, unter anderem Vollbild. Es ist unter Ubuntu / Debian, CentOS / Fedora / RedHat und FreeBSD verfügbar.
quelle
tmux
undscreen
viele finden eine bessere Benutzererfahrung als sie es sofort tun.Wie bereits erwähnt, empfehle ich die Verwendung von
tmux
oderscreen
in der Zukunft, aber das funktioniert nur, wenn Sie vorher darüber nachgedacht haben.Ich war schon einige Male in deiner Situation. Wenn sich das Terminal, das Sie ausgeführt haben, auf Ihrem Office-Desktop-PC befand, können Sie SSH in Ihren PC einbinden und einen VNC-Server starten. Auf diese Weise können Sie zumindest das offene Terminal überprüfen.
quelle
Wie bereits erwähnt, kann tmux verwendet werden. Bildschirm ist nicht nützlich, wenn Sie den Bildschirm für mehrere Personen freigeben möchten.
Vor allem empfehle ich jedem, https://tmate.io/ auszuprobieren, um temporären Zugriff zu gewähren, auch auf localmachine. tmate unterstützt alle oben genannten :)
https://tmate.io/
quelle