Properties
name: tmux
description: Use this skill to run background processes or long running processes using tmux.

tmux lets you run commands in the background and check on them later. When you run a normal bash command, you have to wait for it to finish. With tmux, you can start a command, let it run in the background, and check its output whenever you want.

Key Terms:

  • Session: A container that holds your tabs. Like a browser window.
  • Tab: A place where one command runs. Like a browser tab. We call this a "window" in tmux.

Step 1: Create or Use a Session

Always do this first:

# Create a new session
tmux new-session -d -s mysession
  • Use the project name (e.g. working directory basename) as the session name.
  • If it fails with "duplicate session", it means the session already exists. It may be created by a prior session. You can use it, but check its state before continuing.
# See what sessions exist
tmux ls

# Delete a session when done
tmux kill-session -t mysession

Step 2: Create Tabs (Windows)

# Create a tab called "mytab" in session "mysession"
tmux new-window -t mysession -n mytab
  • Always give your tab a name. Don't use numbers.
  • Always specify the session name in the command line as there may be multiple tmux sessions active.
# See what tabs exist
tmux list-windows -t mysession

# Delete a tab
tmux kill-window -t mysession:mytab

Step 3: Run a Command in a Tab

# Run "npm start" in the "server" tab
tmux send-keys -t mysession:server 'npm start' Enter
  • Always end with Enter to actually run the command.
# Stop a running command: Send Ctrl+C
tmux send-keys -t mysession:server C-c

Common stop signals:

  • C-c = Ctrl+C (interrupt)
  • C-d = Ctrl+D (end input)

Step 4: Check What Happened

# See what's on screen now
tmux capture-pane -t mysession:server -p

This is how you check if your command worked.

# Get last 10 lines
tmux capture-pane -t mysession:server -p | tail -n 10

# Check if text appears in output
tmux capture-pane -t mysession:server -p | grep "Server running"
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9