Screen terminal multiplexer

From Alpine Linux
Revision as of 10:05, 24 October 2012 by Mhavela (talk | contribs) (Restructuring a bit. Adding some notes and examples that indicates how screen can be used)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

screen is a good tool for remote support. It can also be used to start a command you want to keep running after you close your console session (you can later on attach to your running screen session). When you enter a screen session you will not notice too much.
To know if you are inside a screen session, use the notes in 'get help' section mentioned below.

General

Install

In order to use screen you will have to install it:

apk add screen

Usage

Start a new session

To enter a screen session you just enter:

screen

List existing sessions

When you have started some session(s) you can list them:

screen -list

You might get a list that looks like this:

There are screens on:
        11151.pts-1.mhlab01     (Attached)
        11131.pts-3.mhlab01     (Attached)
2 Sockets in /var/run/screen/S-root.

Attach to a existing session

Lets say you want to attach to a existing session (e.g. the above 11131.pts-3.mhlab01 session).

screen -x 11131

or

screen -x pts-3

Tip: If you see Attaching from inside of screen?, you are allready inside a screen session.

Controlling a screen session

While inside a screen session, you can controll it using keyboard shortcuts. We will only describe some of those alternatives.

Tip: To enter a keyboard shortcut that controls the current screen session, you should click A while holding down CTRL
In the below examples this procedure is described as ^A

Get help

One of the most useful commands is the one that gives you 'help'.
While in your screen session, click:

^A ?

(Do not press/hold CTRL when clicking ?)

Detach from a session

Sometimes it's useful to just detach from a session without killing it.

^A d

Tip: Try starting ping 127.0.0.1 while inside a screen session and then detatch from the session.
After some while re-connect to the session using screen -x.
Note that the "seq" value indikates that ping had continued running while you where detatched from the session.

Close or kill a session

To 'kill' a session:

^A k

Confirm by clicking y when prompted.

You can also 'kill' you session by entering:

exit

Extra

Force console users into a screen session

In some cases you might want to force only console users into a screen session.
Note that the this configuration will not force SSH-users into a screen.
Edit /etc/profile and add the following code to it:

if [ -n "$PS1" ] && [ -z "$STARTED_SCREEN" ] && [ -z "$SSH_TTY" ]; then
  STARTED_SCREEN=1 ; export STARTED_SCREEN
  screen -RR && exit 0
  echo "Screen failed! continuing with normal bash startup"
fi

Force console and SSH users into a screen session

The above example holds the if-statement:

&& [ -z "$SSH_TTY" ]

Remove this part from above configuration to force SSH sessions into a screen session.

Note: Console users will also be forced into a screen session when folowing these instructions