GNU Screen¶

Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells.
TL;DR - Screen keeps your ssh sessions alive on a host.
Installation¶
Most servers have screen installed already. If they don't it can be installed
via apt-get install screen, yum install screen, brew install screen. Sorry
Windows, try Remote Desktop.
Startup¶
Get a terminal on a remote host (or local) then run screen
screen
If you're not brave, try man screen to read more about.
Once screen has started, you'll want to remember <C-a>?. That is how you get
the screen options menu. It's typed literal hold CTRL and press a. To quit
the screen app, type exit. To keep screen running, type <C-a>d to detach
from the program. To reattach to that session try screen -x.
Options¶
There are tons of options and they're best found by reading the man page or
Googling gnu screen shortcuts. Here's some of my favorites.
Startup Flags¶
screen -DDR. Force others of the current session and reattach yourself.screen -x. Reattach yourself, but allow others to stay in. This is cooperative mode. Good for pairing and much faster than GUI screen sharing.
Control Keys¶
<C-a><C-c>. Create a "tab" to have multiple sessions.<C-a><C-a>. Toggle to previous session.<C-a><Space>. Switch next session.<C-a>a. Send a literal<C-a>back to shell.
Config File and Pretty Colors¶
It's easy to get lost in screen without a status line. So creating this file in your home directory will help.
~/.screenrc
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
This should give you a pretty statusline at the bottom of your terminal.
Here's what it looks like:

TMUX¶
A strong competitor to screen is tmux. It has a more modern code base and is
actively maintained. The reason I personally don't use it is out of habit and
it's not installed everywhere. screen just works for my work flow.
References¶
- https://www.gnu.org/software/screen/
- http://www.pixelbeat.org/lkdb/screen.html
- http://aperiodic.net/screen/quick_reference