This quick guide will show you how to run a command in an SSH session and allow you to disconnect and leave the command to keep running. I use this frequently for running my backups to external drives so that I can kick them off then shut down my laptop instead of leaving it running all night.
Usually if you kick off a command in an SSH session then disconnect, the command will also stop running. But using a tool called tmux , short for terminal multiplexer’, you can avoid this issue.
tmux is essentially another session which runs separately. You start a tmux session then run whatever you want in it. Then you can disconnect and come back to the session later. It is very similar to screen but I found much easier to use.
It is very simple…
- Make sure you have it installed: sudo apt-get install tmux
- Start a tmux session: tmux
- Run whatever you want…. e.g. start a backup job.
- Disconnect from your session: Ctrl + b allows you to send tmux admin commands. So use Ctrl + b then d for ‘disconnect’. There are various other admin keys you can use but ‘d’ is all I’ve ever needed. I know you can split screens, and some other things too.
- You can now quit your SSH session.
- Once you come back to your computer, log in again to the SSH session then run tmux ls to see any running tmux sessions.
- Connect to your session again: tmux attach -t 0 where -t stands for target and 0 is the session name displayed in your tmux ls output.
- You can exit a tmux session and end it at the same time with Ctrl + d
- Or you can kill a running sessino from the SSH command line with tmux kill-session -t 0
The developer has a nice guide/description here: http://www.sitepoint.com/tmux-a-simple-start/
And there is a nice cheat sheet for tmux commands here: http://www.dayid.org/os/notes/tm.html