How to use the “screen” command in Linux

screen command

The screen command launches a terminal in the background which can be detached from and then reconnected to. This is especially useful when you log in to the system remotely. You can start a screen, kick off a command, detach from the screen, and log out. You can then log in later and reattach to the screen and see the program running.

Below are the options available with the screen command :

# screen --help
Use: screen [-opts] [cmd [args]]
 or: screen -r [host.tty]

Options:
-4            Use IPv4.
-6            Use IPv6.
-a            Force all capabilities into each window's termcap.
-A -[r|R]     Adapt all windows to the new display width & height.
-c file       Read configuration file instead of '.screenrc'.
-d (-r)       Detach the elsewhere running screen (and reattach here).
-dmS name     Start as daemon: Screen session in detached mode.
-D (-r)       Detach and logout remote (and reattach here).
-D -RR        Do whatever is needed to get a screen session.
-e xy         Change command characters.
-f            Flow control on, -fn = off, -fa = auto.
-h lines      Set the size of the scrollback history buffer.
-i            Interrupt output sooner when flow control is on.
-l            Login mode on (update /var/run/utmp), -ln = off.
-list         or -ls. Do nothing, just list our SockDir.
-L            Turn on output logging.
-m            ignore $STY variable, do create a new screen session.
-O            Choose optimal output rather than exact vt100 emulation.
-p window     Preselect the named window if it exists.
-q            Quiet startup. Exits with non-zero return code if unsuccessful.
-r            Reattach to a detached screen process.
-R            Reattach if possible, otherwise start a new session.
-s shell      Shell to execute rather than $SHELL.
-S sockname   Name this session [pid].sockname instead of [pid].[tty].[host].
-t title      Set title. (window's name).
-T term       Use term as $TERM for windows, rather than "screen".
-U            Tell screen to use UTF-8 encoding.
-v            Print "Screen version 4.00.03 (FAU) 23-Oct-06".
-wipe         Do nothing, just clean up SockDir.
-x            Attach to a not detached screen. (Multi display mode).
-X            Execute [cmd] as a screen command in the specified session.

Starting a screen session

To start a screen session type the command:

# screen

You can run any application normally once you run the screen command. When you run the screen a command a terminal is launched in background.

Detach from the screen

To detach from the screen press the following keys in sequence. You will get a message as “[detached]” when the session is detached. The background terminal gets detached with this.

Ctrl+a+d
[detached]

You can also user the -d option if yiu want to detach the screen from another terminal. here you need to specify the screen ID which can be obtained from screen -ls command.

# screen -d [screen id]

For example :

# screen -ls
There are screens on:
        25168.pts-0.node01       (Attached)
1 Socket in /var/run/screen/S-root.
# screen -d 25168.pts-0.node01
[25168.pts-0.node01 detached.]

Reattach to the screen

To reattach to the screen type the command:

# screen -r

List the screens running

To list the screens with their status (attached/detached) us the -list of -ls option.

# screen -ls
There are screens on:
        25045.pts-0.node01       (Detached)
        25168.pts-0.node02       (Detached)
2 Sockets in /var/run/screen/S-root.
Related Post