Screen notes
Contents
Minimal GNU Screen
`Screen` allows you to start shells and disconnect and reconnect them from any location. You can start a shell at work; disconnect; go home and reconnect to the same shell. A single screen session can group multiple shells. A user can have multiple screen sessions.
command-line screen arguments
- `screen` -- start new screen session with one virtual screen.
- C-a d -- disconnect the session. The session continues as daemon. You can reconnect later.
- `screen -r` -- reconnect to a disconnected session.
- `screen -rd` -- force a disconnect of a connected session and then reconnect.
control commands inside of screen session
- C-a ? -- Show help
- C-a d -- Disconnect
- C-a c -- Create New virtual screen in the current session
- C-a n -- Next screen
- C-a p -- Previous screen
- C-a esc -- Enter Copy/Scrollback mode (esc again to exit scrollback mode). Scrollback mode is very useful.
- Use Vi-like keys to move around the scrollback history (the usual h,j,k,l for cursor, C-u for half page UP, C-d for half page DOWN).
- Press SPACE to start selecting a region. Press SPACE again to Yank the region.
- Press "C-a ]" to paste the yanked text into the current screen.
.screenrc
This is the .screenrc I use. It isn't complicated, but it does show you clearly which screen you are attached to and I like the status bar that shows how to get help. This is a helpful failsafe for users that forget "C-a ?" :-)
Download .screenrc <include svncat src="file:///home/svn/src/dotfiles/.screenrc" highlight="sh" />
multiuser sessions
The `screen` command must be setuid root. This is a security vulnerability, so learn what setuid root means before you do this. As a rule of thumb, setuid is fine for a desktop developer's box, but a bad idea for a production machine. You may also need to set permissions for /var/run/screen to 755.
sudo chmod u+s `which screen` sudo chmod 755 /var/run/screen
- `screen -S session_name` -- Start a new session with a given name. This makes it easier to find with `screen -ls` described below.
- `screen -ls` -- list the available sessions.
- `screen -ls username/` -- list the sessions of a given user. Note the trailing slash.
- `screen -x username/sessionname` -- connect to a connected session. Use this to share sessions with other people. This is much like `kibitz`.
The session owner starts screen. The owner should give it a name so it is easy to find.
screen -S shared
Once screen has started the session owner needs to turn on multiuser mode and allow a given friend access.
C-a :multiuser on C-a :acladd friend_username
The friend will then start screen and tell it to connect to the owner's session.
screen -x owner/shared