Using tmux for persistent shell sessions#
Tmux allows you to keep a shell session active when closing your ssh connection. So, when you close your laptop to change a room, you don’t lose the current state of your command line tools. It has many more useful features.
However, you need to remember the login node you used to start tmux, and X11 applications (e.g. ncview) will not survive the disconnect.
emacs will survive in command line mode (
module load emacs ; emacs -nw).
The following examples will assume that you have prescribed your user name and allowed (trusted) X11 forwarding for dkrz.de machines in your
host *.dkrz.de user YOUR_USER_ID ForwardX11 yes ForwardX11Trusted yes
To use it, start your first session as:
ssh levante2.dkrz.de # chose your preferred node here. tmux
When you lost your ssh connection, you can reconnect by
ssh levante2.dkrz.de tmux attach -t 0
To get a list of active tmux sessions (on your login node of choice):
Ask your favorite search engine for
tmux tutorial or
tmux cheat sheet to get started.
You probably want to rebind the control key for tmux. By default tmux will eat ctrl-b (
c-b in the following) and use it for commands to tmux. Not super-handy if you are used to using it for moving the cursor backward by one character… Add
unbind C-b set-option -g prefix C-j bind-key C-j send-prefix
~/.tmux.conf on levante to move this to
c-j will send a
c-j to your shell/emacs/whatever.
Now you can use
d to detach from your tmux session. It will live on, but you are back in the normal shell.
Also have a look at
tmux customization in your favorite search engine.
Using tmux and X11 forwarding#
As stated above, we’ll assume that you have activated X11 forwarding for your connections to levante.
Now the only issue is that the shell in the tmux will forever remember the display number you had, when you started tmux, but your ssh connections will get different display numbers on each connect.
ssh levante2.dkrz.de echo $DISPLAY # localhost:38.0 tmux echo $DISPLAY # localhost:38.0 # [ on a new terminal / ... ] ssh levante2.dkrz.de echo $DISPLAY # localhost:46.0 tmux attach -t 0 export $DISPLAY # localhost:38.0 # you cannot start x11 apps now. export DISPLAY=localhost:46 # this should fix things. Take the number you got from the echo after logging in.