GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Tmux-Sitzung auf Remote-System automatisch starten, wenn Sie sich über SSH anmelden

Es ist immer eine gute Praxis, einen lang andauernden Prozess in einem Tmux auszuführen Sitzung beim Arbeiten mit entfernten Systemen über SSH. Denn es verhindert, dass Sie die Kontrolle über den laufenden Prozess verlieren, wenn die Netzwerkverbindung plötzlich abbricht. Für den Fall, dass die Netzwerkverbindung aus irgendeinem Grund unterbrochen wird, werden die Prozesse innerhalb der Tmux-Sitzung auf den Remote-Systemen weiter ausgeführt, sodass Sie sich mit dem Befehl „tmux Attach“ wieder mit der Tmux-Sitzung verbinden können, sobald die Netzwerkverbindung wieder online ist. Was ist, wenn Sie vergessen haben, die Tmux-Sitzung überhaupt zu starten? Egal wie vorsichtig Sie sind, manchmal vergessen Sie vielleicht, die Tmux-Sitzung zu starten. Hier ist eine einfache Möglichkeit, dieses Problem zu vermeiden. Sie können die Tmux-Sitzung auf den Remote-Systemen automatisch starten, wenn Sie sich über SSH anmelden. Dies ist besonders hilfreich, wenn Sie beim Upgrade eines Remote-Linux-Servers über SSH von Ihrem lokalen System aus die Netzwerkverbindung verloren haben. Bitte beachten Sie, dass der folgende Tipp automatisch eine Tmux-Sitzung startet, wenn Sie versuchen, sich entweder lokal oder remote über SSH von einem anderen System aus bei Ihrem Linux-System anzumelden.

Tmux-Sitzung auf Remote-System automatisch starten, wenn Sie sich über SSH anmelden

Um die Tmux-Sitzung automatisch zu starten, wenn Sie sich über SSH verbinden, bearbeiten Sie das ~/.bash_profile Ihres Remote-Systems Datei:

$ nano ~/.bash_profile

Wenn die Datei nicht verfügbar ist, erstellen Sie sie einfach.

Und fügen Sie die folgenden Zeilen hinzu:

if [ -z "$TMUX" ]; then
    tmux attach -t default || tmux new -s default
fi

Speichern und schließen Sie die Datei. Melden Sie sich ab und wieder bei den Remote-Systemen an. Sie landen in einer neuen Tmux-Sitzung mit dem Namen 'default' .

Starten Sie nun einen beliebigen Prozess innerhalb der Tmux-Sitzung und trennen Sie ihn davon, indem Sie Strg+b drücken gefolgt von d . Der Prozess läuft innerhalb der Tmux-Sitzung weiter, auch nachdem die Netzwerkverbindung unterbrochen wurde. Sobald die Netzwerkverbindung wiederhergestellt ist, verbinden Sie sich per SSH mit dem Remote-System und Sie werden sehen, dass der Job noch läuft!!

Sehen Sie sich die folgende animierte Ausgabe an:

Lassen Sie mich erklären, was ich gerade in der obigen Ausgabe getan habe.

  1. Ich verbinde mich von meinem lokalen System über SSH mit meinem entfernten Ubuntu-Server. Eine neue Tmux-Sitzung mit dem Namen "default" wird automatisch gestartet.
  2. Innerhalb der Tmux-Sitzung führe ich einen Befehl aus (z. B. watch grep \"cpu MHz\" /proc/cpuinfo), um die CPU-Geschwindigkeit zu überwachen.
  3. Dann habe ich mich von der Sitzung getrennt, indem ich Strg+b gedrückt habe und d .
  4. Und dann liste ich die Tmux-Sitzungen mit dem Befehl "tmux ls" auf und verlasse die SSH-Sitzung.
  5. Schließlich verbinde ich mich wieder über SSH mit dem Remote-System und überprüfe, ob der Prozess innerhalb der Tmux-Sitzung ohne Unterbrechung weiterläuft.

Ich hoffe, Sie verstehen.

Um die automatisch startende Tmux-Sitzung zu stoppen, löschen Sie einfach die zuvor hinzugefügten Zeilen aus der Datei ~/.bashrc Ihres Remote-Systems oder ~/.bash_profile Datei.

Dieser einfache Tipp hilft Ihnen, die Kontrolle über Ihre Remote-Jobs nicht zu verlieren. Sie müssen Tmux nicht immer jedes Mal manuell starten. Lassen Sie Tmux einfach automatisch starten, wenn Sie sich per SSH mit einem entfernten System verbinden, wie in dieser Anleitung beschrieben.

Empfohlene Lektüre :

  • So starten Sie die Bildschirmsitzung unter Linux beim Anmelden automatisch
  • Reptyr – Verschieben Sie einen laufenden Prozess von einem Terminal zu einem anderen, ohne es zu schließen

Linux
  1. Ssh – Eine Datei mit Ssh zurück auf das lokale System kopieren?

  2. Wann verwendet man Nohup?

  3. Ssh – Ssh-Zugriffsversuche protokollieren?

  4. Ctrl-c-Handhabung in einer SSH-Sitzung?

  5. So senden Sie Daten von einer Remote-SSH-Sitzung an die lokale Zwischenablage

So führen Sie Linux-Befehle auf einem Remote-System über SSH aus

So starten Sie die Bildschirmsitzung unter Linux beim Anmelden automatisch

Ausführen von Befehlen auf Remote-Linux-Systemen über SSH

SSHFS:Mounten eines Remote-Dateisystems über SSH

So halten Sie Remote-SSH-Sitzungen nach der Trennung am Laufen

Init 1 von einer Remote-SSH-Sitzung (über VPN) beendet meine SSH-Verbindung