Skip to main content

Tmux

tmux hängt im toten Netzlaufwerk – Notfall‑Cheatsheet

FehlerWenn dein tmux‑Fenster in einem Pfad steht, der auf einem abgestürzten NFS‑/CIFS‑Mount liegt, wirkt das nichtsTerminal angezeigtwie eingefroren: jeder I/O‑Aufruf wartet ewig auf eine Antwort, die nie kommt. Diese Anleitung zeigt dir, wie du die blockierte Shell verlässt, die Pane reparierst – oder den kaputten Mount brutal löst – ohne deine ganze tmux‑Sitzung zu verlieren.


1 · Schnelle Hilfe direkt in tmux

ner
AktionTastenfolge (Prefix = Ctrl+b)Ergebnis
Neues WindowCtrl+b cFrische Login‑Shell in $HOME oder /.
Neue Pane (horizontal)Ctrl+b "Zweite Shell, unabhängig vom blockierten Verzeichnis.
Hängende Pane killenCtrl+b x → yNur die kaputte Pane wird beibeendet.
Pane neu startenCtrl+b : → respawn-pane -kKills + sofortiger Neustart der Shell darin.
Ganzes Window killenCtrl+b & → yAlle Panes dieses Fensters schließen.

Tipp: Meist reicht es, Ctrl+b c zu drücken, sich in der neuen Shell per pwd den aktuellen Pfad anzeigen zu lassen und anschließend den defekten Mount zu lösen (→ Abschnitt 3).


2 · Fest­hängende Prozesse gezielt töten

# 1 · TTY der Pane herausfinden
who         # Spalte "PTS" merken (z. B. pts/4)

# 2 · laufende Prozesse auf diesem TTY zeigen
ps -o pid,stat,cmd -t pts/4

# 3 · sanft beenden (SIGTERM), notfalls hart (SIGKILL)
kill <PID>          # SIGTERM
kill -9 <PID>       # SIGKILL

Sobald der blockierende Prozess endet, reagiert die Shell sofort wieder.


3 · Abgestürzten Netz‑Mount „faul“ abhängen

sudo umount -l -f /pfad/zum/netzlaufwerk
  • -l (lazy) entfernt den Mount sofort aus dem Namensraum, selbst wenn noch offene Handles existieren.
  • -f (force) erzwingt das Umounten auch bei NFS‑Server‑Timeout.

Danach funktionieren alle Befehle wieder, die nicht nochmals auf dieses Verzeichnis zugreifen.


4 · Letzter Ausweg – komplette Session
 schließen

# innerhalb von tmux
Ctrl-b d             # detach
# auf der Login-Shell
tmux kill-session -t <sessionname>

Das beendet alles in einem Rutsch. Nützlich, wenn mehrere Windows abhängig sind oder sich die Lage anders nicht bereinigen lässt.


5 · Dauerhafte Prävention

  • Automount (systemd.automount / autofs) einsetzen, damit inaktive NFS/CIFS‑Mounts nach Timeout verschwinden.
  • Shell‑Prompt optimieren: Entferne jede $PWD-Auflösung in PROMPT_COMMAND, wenn du häufig in Netz­pfaden arbeitest.
  • Watchdog‑Cronjob: Skript, das hängende Mounts erkennt und umount -l -f ausführt.

6 · „Neue tmux‑Session bleibt leer“ – Konfiguration fixen

Manche Distributionen starten tmux ohne explizite Login‑Shell. Ist die voreingestellte Shell nicht ausführbar (z. B. durch einen defekten Symlink oder ein fehlendes Home‑Verzeichnis), erscheint nur ein schwarzer Bildschirm. Setze deshalb eine valide Standard‑Shell in deiner ~/.tmux.conf:

nano ~/.tmux.conf
# ------------------------------
# Saubere Login‑Shell erzwingen:
set-option -g default-shell /usr/bin/env bash
# Optional: gleich als Login‑Shell starten
set-option -g default-command "bash -l"
# ------------------------------

Verbesserung gegenüber deinem ursprünglichen Trick: /usr/bin/env bash findet bash auch dann, wenn sie nicht unter /bin liegt, und funktioniert daher auf nahezu allen Linux‑Varianten (inkl. macOS / BSD). Mit default-command "bash -l" bekommst du zusätzlich ein vollwertiges Login‑Environment (u. a. /etc/profile wird geladen).

Zusammenfassung: Schon ein einziger Eintrag in ~/.tmux.conf verhindert, dass du in leeren Fenstern landest – und erspart dir den Neustart, falls deine Standard‑Shell einmal verschwindet.


7 · Kurzanleitung für die Hosentasche

# Pane hängt im toten Mount?
Ctrl-b c                # neues Window
sudo umount -l -f …     # Mount loswerden
Ctrl-b x                # alte Pane killen

Fertig! Deine tmux‑Sitzung lebt weiter, und du sparst dir den Logout.