Skip to main content

tmux

Default‑Shell schnell auf /bin/bash festlegen

Oft bleibt eine neue tmux‑Session schwarz, wenn keine gültige Standard‑Shell definiert ist. Mit der folgenden Ein‑Zeiler‑ oder Schritt‑für‑Schritt‑Anleitung schreibst du den notwendigen Eintrag in ~/.tmux.conf.

Ein‑Zeiler (sofort ausführen)

echo 'set-option -g default-shell /bin/bash' >> ~/.tmux.conf
echo 'set-option -g default-shell /bin/bash' >> ~/.tmux.conf
mkdir Manual
echo -e 'apt-get update\napt-get full-upgrade -y\n/sbin/reboot now' >> Manual/Update_and_reboot.sh
echo -e 'apt-get update\napt-get full-upgrade -y' >> Manual/Just_update.sh

Hinweis: /bin/bash ist auf fast allen Linux‑Systemen vorhanden. Wer plattformunabhängig arbeiten möchte, setzt lieber /usr/bin/env bash.

Schritt‑für‑Schritt‑Variante

  1. Datei öffnen:
    nano ~/.tmux.conf
  2. Zeile hinzufügen – ganz egal, wo:
    set-option -g default-shell /bin/bash
  3. Speichern & schließen:
    Ctrl+OEnterCtrl+X
  4. tmux‑Konfiguration neu laden (ohne Neustart):
    tmux source-file ~/.tmux.conf

tmux hängt im toten Netzlaufwerk – Notfall‑Cheatsheet

Wenn dein tmux‑Fenster in einem Pfad steht, der auf einem abgestürzten NFS‑/CIFS‑Mount liegt, wirkt das Terminal wie 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

Aktion Tastenfolge (Prefix = Ctrl+b) Ergebnis
Neues Window Ctrl+b c Frische Login‑Shell in $HOME oder /.
Neue Pane (horizontal) Ctrl+b " Zweite Shell, unabhängig vom blockierten Verzeichnis.
Hängende Pane killen Ctrl+b x → y Nur die kaputte Pane wird beendet.
Pane neu starten Ctrl+b : → respawn-pane -k Kills + sofortiger Neustart der Shell darin.
Ganzes Window killen Ctrl+b & → y Alle 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).


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.