How To Use Linux Screen Command?

Linux is a command-line operating system where people really love to manage Linux from its powerful command line. Linux provides a lot of tools to manage from the command line. Linux provides the screen command and tool which is used to create multiple sessions and windows in command line like multiple tabs. Also, these sessions and windows run even the terminal is closed and then can be connected without any interruption. The screen tool is created and developed by the GNU community and also called as “GNU screen”.

Linux screen is generally used with SSH connections even the SSH connection is closed the screen session will continue and it can be accessed from another SSH session without losing current screen content.

Install Screen Command

The screen command can be installed for most of the Linux distributions easily. By default, it is not installed. For deb or apt-based distributions like Ubuntu, Debian, Mint, Kali following commands can be used to install Linux screen.

$ sudo apt update
$ sudo apt install screen

For rpm or yum based distributions like Fedora, CentOS, RHEL etc. following commands can be used.

$ sudo yum update
$ sudo yum install screen

Screen Version

The screen is a command-line tool that is updated regularly for new features and bugfixes. The current version of the screen command can be listed with the –version option like below.

screen --version
Screen version 4.08.00 (GNU) 05-Feb-20

Start Linux Screen

The screen tool can be started from the command line by just running the screen command like below.

$ screen

For the first time, we will see the following screen which provides information about the screen tool. We can skip this screen by pressing Space key.

We will see the following screen which is a regular command line or bash screen with the user name, hostname, and current working path.

Linux screen

Start Named Session

During start the screen session we can set the name of the sessions by using the -S options and providing the session name. In the following example we will set the screen session name as mysession .

$ screen -S mysession

Naming sessions are very useful to call the screen with its name later. This name also used to distinguish the session from others with its name.

List Screen Sessions

The screen can be executed multiple times and multiple screens can be used at the same time. These screens can be listed by using the screen command with the -ls option.

screen -ls

Below we can see that there are two screen sessions which are currently activelt running and attached. The ID of the screens are listed at the start of the name with numbers like 15538 and 15518.

There are screens on:
     15538.pts-3.ubuntu  (25-03-2021 11:21:10)   (Attached)
     15518.pts-0.ubuntu  (25-03-2021 11:21:06)   (Attached)
 2 Sockets in /run/screen/S-ismail.

Create New Window

The power of the screen comes from creating and using multiple windows in a single screen session. The following shortcut will create a new window in the same screen session.

Ctrl+a c

Working and Managing with Linux Screen Windows

The screen windows, sessions are managed via keyboard shortcuts. You can find popular shortcuts in the following table.

Key ShortcutOperation
Ctrl+a c
Ctrl+a “List all windows
Ctrl+a 0Switch to window number 0
Ctrl+a 1Switch to window number 1
Ctrl+a ARename the current window
Ctrl+a SSplit current window horizontally into two region
Ctrl+a |Split current window vertically into two region
Ctrl+a tabSwitch focus into the next region
Ctrl+a Ctrl+aToggle between the current and previous region
Ctrl+a QClose all other regions
Ctrl+a XClose current region

Detach Linux Screen Session

One of the powerful features is detaching and reattaching the screen. The following command will detach the current Linux screen session. But this will not end the Linux screen session. This screen session can be reattached like the next example.

Ctrl+a d

Reattach To A Linux Screen Session

We can also reattach a linux screen session by using -r option with the screen command like below.

$ screen -r

If there are multiple deattached screen session first you should list these sessions. Listing these sessions will also provide session ID.

$ screen -ls

We can provide the session ID we want to reattach by providing after the -r option like below.

$ screen -r 123456

Change Linux Screen Configuration

As a complex and customizeable tool linux screen has the configuration file named .screenrc which is locate under the current user home directory and /etc directory like below.

~/.screenrc

/etc/screenrc

The ~/.screenrc file is not created by default. As a regular text file, you can create it with a text editor like nano or vim. The /etc/screenrc has the following default configuration.

# $Id: screenrc,v 1.15 2003/10/08 11:39:03 zal Exp $
#
# /etc/screenrc
#
#   This is the system wide screenrc.
#
#   You can use this file to change the default behavior of screen system wide
#   or copy it to ~/.screenrc and use it as a starting point for your own
#   settings.
#
#   Commands in this file are used to set options, bind screen functions to
#   keys, redefine terminal capabilities, and to automatically establish one or
#   more windows at the beginning of your screen session.
#
#   This is not a comprehensive list of options, look at the screen manual for
#   details on everything that you can put in this file.
#

# ------------------------------------------------------------------------------
# SCREEN SETTINGS
# ------------------------------------------------------------------------------

#startup_message off
#nethack on

#defflow on # will force screen to process ^S/^Q
deflogin on
#autodetach off

# turn visual bell on
vbell on
vbell_msg "   Wuff  ----  Wuff!!  "

# define a bigger scrollback, default is 100 lines
defscrollback 1024

# ------------------------------------------------------------------------------
# SCREEN KEYBINDINGS
# ------------------------------------------------------------------------------

# Remove some stupid / dangerous key bindings
bind ^k
#bind L
bind ^\
# Make them better
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history

# An example of a "screen scraper" which will launch urlview on the current
# screen window
#
#bind ^B eval "hardcopy_append off" "hardcopy -h $HOME/.screen-urlview" "screen urlview $HOME/.screen-urlview"

# ------------------------------------------------------------------------------
# TERMINAL SETTINGS
# ------------------------------------------------------------------------------

# The vt100 description does not mention "dl". *sigh*
termcapinfo vt100 dl=5\E[M

# turn sending of screen messages to hardstatus off
hardstatus off
# Set the hardstatus prop on gui terms to set the titlebar/icon title
termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
# use this for the hard status string
hardstatus string "%h%? users: %u%?"

# An alternative hardstatus to display a bar at the bottom listing the
# windownames and highlighting the current windowname in blue. (This is only
# enabled if there is no hardstatus setting for your terminal)
#
#hardstatus lastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

# set these terminals up to be 'optimal' instead of vt100
termcapinfo xterm*|linux*|rxvt*|Eterm* OP

# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
# (This fixes the "Aborted because of window size change" konsole symptoms found
#  in bug #134198)
termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

# To get screen to add lines to xterm's scrollback buffer, uncomment the
# following termcapinfo line which tells xterm to use the normal screen buffer
# (which has scrollback), not the alternate screen buffer.
#
#termcapinfo xterm|xterms|xs|rxvt ti@:te@

# Enable non-blocking mode to better cope with flaky ssh connections.
defnonblock 5

# ------------------------------------------------------------------------------
# STARTUP SCREENS
# ------------------------------------------------------------------------------

# Example of automatically running some programs in windows on screen startup.
#
#   The following will open top in the first window, an ssh session to monkey
#   in the next window, and then open mutt and tail in windows 8 and 9
#   respectively.
#
# screen top
# screen -t monkey ssh monkey
# screen -t mail 8 mutt
# screen -t daemon 9 tail -f /var/log/daemon.log

Leave a Comment