Summary
Install and use tmux - a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. Furthermore, tmux may be "detached" from a screen and continue running in the background, allowing the user to logout, then later reattach the screen when logging back in.
It's an alternative to screen - in short, screen is more likely to be installed by default, but tmux has a couple more features and is more actively developed.
Environment
Directions
- Install tmux
- Red Hat:
yum install tmux
- Ubuntu:
apt install tmux
- macOS:
brew install tmux
or port install tmux
- Open a terminal.
- Enter:
tmux
Use tmux commands by pressing the prefix, by default Ctrl-b, followed by a command key.
Sample workflow to run long-running jobs
- Open a terminal and start
tmux
- Start your job, e.g.
python myscript.py
- Name your tmux session for ease of recall: Ctrl-b $
- Detach your tmux session so that it continues to run in the background: Ctrl-b d
At this point you are free to log out of the system, start a new tmux session that you can likewise name and detach, or otherwise continue working.
At any point, you can reattach to any previously detached tmux sessions with: tmux attach -t name
For example, based on the previous sample output of tmux ls
, tmux attach -t mypythonscript
Caution: Sessions persist through logouts, but they are lost if you shut down the computer!
Tips and tricks
Here are some commonly-used tips and tricks:
- Ctrl-b " (quotation mark) splits the active terminal window horizontally. Switch between the windows with Ctrl-b and then a directional arrow key.
- Ctrl-b % (percent sign) splits the active terminal window vertically. Switch between the windows with Ctrl-b and then a directional arrow key.
- Ctrl-b d (lowercase D) to detach the session (it keeps running in the background). You can logout, log back in, and
tmux attach
to re-attach a previously detached session.
- Add a scrollbar to tmux window in Linux:
echo "set -g terminal-overrides 'xterm*:smcup@:rmcup@'" >> ~/.tmux.conf
- A good cheatsheet for tmux - https://tmuxcheatsheet.com/
Notes
tmux uses a prefix for all of its commands, by default it is Ctrl-b. This and many other behaviors of tmux can be changed via the configuration file ~/.tmux.conf
. It's similar to vim in this sense with .vimrc. There's a plugin manager, with plugins for things like better mouse support for those who like using the mouse once-in-a-while. Here's a sample .tmux.conf for reference with pieces for a different prefix, scroll-wheel support, macOS clipboard integration, and the aforementioned better mouse support enabled.
For best practices and more in-depth tips and tricks take a look at The Tao of tmux.