6.4.9 Running applications in the background using Screen
When working in a terminal, there is often a need to run long-running tasks that you do not want to interrupt when the connection is lost or the terminal is closed. It can also be useful to work with multiple processes or sessions simultaneously in the same terminal window. To resolve this issue, you can use the Screen utility.
Screen is a console utility that allows you to open an unlimited number of independent virtual terminals (windows) in an active SSH session. It provides the ability to run applications in the background, switch between different sessions, disconnect from sessions and reconnect to them later, even after the connection is lost. Screen is widely used for remote management of servers via SSH, as it allows you to keep running processes when the connection is lost.
Installation, launch and display of help Screen
In a number of Linux distributions, Screen is present by default. But it may happen that the utility is not installed. You can complete the installation using the following commands.
Important: installation must be performed with administrator (root) access level. You can go to the administrator level using su or sudo.
Command for Ubuntu/Debian:
- apt-get install screen
For CentOS/RHEL:
- yum install screen
Immediately after installation, Screen is ready to use. To get started, let’s launch Screen without parameters, creating a new session:
- screen
Immediately after launch, a window will appear with information about the creators and the license, and will wait for you to press the spacebar or Enter.
Please note: Screen commands are executed using the hotkeys Ctrl + a
. You need to press and release Ctrl + a
, and then enter the required command. For example, to list all commands, first press and release Ctrl + a
, and then type ?
Ctrl + a -> ?
If it doesn’t work, try again, following the sequence of clicks:
- Press
Ctrl + a
- Release
Ctrl + a
- Enter
?
Other commands in Screen are executed in the same way. First press and release Ctrl + a
and then enter the desired command, for example:
Ctrl + a -> c
– create a new screenCtrl + a -> n
– switch to next screenCtrl + a -> :
– enter a command to send to the background process
Note the use of ->
to indicate the sequence, press Ctrl + a
⭢ enter command
.
Examples of practical application
To begin with, in the current screen (it is zero in the list), let’s run:
- ping 8.8.8.8
Now let’s introduce
Ctrl + a -> c
With this team we created a new screen, and now they work simultaneously.
Let’s run it:
- ping 8.8.4.4
To switch between screens, you can either specify the screen number or select a screen from the list:
Ctrl + a -> 0
– will take us to screen 0.Ctrl + a -> "
– will display a menu for selecting a screenshot.Ctrl + a -> n
– switches to the next screen.Ctrl + a -> p
– switches to the previous screen.
Now let’s minimize Screen with our pings. To do this we will use a hotkey
Ctrl + a -> d
After executing the command, Screen will be minimized and we will be taken to our terminal. In order to return, run the utility with the -r
switch:
- screen -r
Sometimes trouble happens with lost screenshots; in order to connect to them, you need to run the command:
- screen -x
then find the number of the lost screen in the output and return it with the command:
- screen -x n
where n
is the same number.
You can return to the session even after the SSH connection is closed when using Screen remotely, which makes it indispensable when performing many jobs.
You can quickly create a new screen with a running program, for example, wget
of a large file:
Using the -S
switch when running Screen, you can specify the name of the screen:
- screen -S download wget http://mirror.thehost.ua/debian-cd/7.8.0/amd64/iso-dvd/debian-update-7.8.0-amd64-DVD-1.iso
In our example, the window will be named download
. There is always the option to rename the screen with a hotkey:
Ctrl + a -> A
You can view all active screens with the command:
- screen -list
If you need to connect to a screen running in another terminal, you can do this using the command:
- screen -x download
Screenshots can be hidden from strangers using a hotkey:
Ctrl + a -> x
Managing windows
Screen has the ability to divide the main window into several areas (panels) for more efficient organization of your workspace. You can create both horizontal and vertical sections and easily switch between them.
Horizontal separation
To split a window horizontally, use a hotkey:
Ctrl + a -> S
Vertical separation
To vertically split a window, use the following combination:
Ctrl + a -> |
After dividing the window into panels, you can switch between them using the command:
Ctrl + a -> Tab
If after switching to a new panel nothing can be done, then the screen has not yet been launched on this panel. You can either create a new one or choose from existing ones.
You can close a single panel or all panels except the current one like this:
Ctrl + a -> X
– close the current panel.Ctrl + a -> Q
– close all panels except the current one.
The ability to divide the main window into horizontal and vertical areas allows you to effectively use the workspace to simultaneously work with different tasks and processes.
Write output to file
Everything that is output in the Screen window can be written to a file using the command:
Ctrl + a -> H
After entering this command, Screen will ask for the file name to record.
Blocking access to Screen
To block Screen from unauthorized access, you can use the command:
Ctrl + a -> x
After entering this command, you will be asked for a password. To unlock you will need to enter the same password.
Please note: when entering commands in Screen, both lowercase and uppercase characters are used. To switch case, use the Shift or CapsLock keys on your keyboard.