"Screen "* is a very handy program which has many functions. It is very convenient to use this utility when connecting to the system remotely via ssh. But its most common use is to minimize programs that can not do this themselves, with the ability to return to them later. This can be useful when working with programs that are not implemented as a "daemon + client", but as a whole, and do not work without running the interface.
Installation screen
To install on Ubuntu, run the command
sudo apt-get install screen
After that, you need to run screen:
screen
After starting you will see either a command prompt or a "welcome screen", pressing SPACE or ENTER on which you will also get into the shell. In this case, all commands will be run already "inside" the screen.
In order to quit the screen (quit, not disconnect), just quit all the shells open in it, or press Ctl-a , and answer "y" to the question "do you really want to quit".
To disconnect from the current screen without closing or terminating the session, you can use the combination Ctrl-a d.
Connect to screen
If you already have a running session and want to connect to it, then
- if there is only one session, a simple command will suffice:
screen -x
- if there are several sessions, then: you can see the list of running screens with the command screen -ls:
screen -ls
There are screens on:
2672.pts-0.ubuntu (Detached)
2437.pts-0.ubuntu (Detached)
2 Sockets in /var/run/screen/S-diesel.
Choose the screen we want, and join it:
screen -x 2672.pts-0.ubuntu
If you want to change the name of the session and want to run and use several screen sessions for different tasks. Come up with a name, then start a new screen like this
$ screen -S "job1"
where job1 is the name of our "rename" session. Now we will see a much clearer one in -ls:
$ screen -ls
There are screens on:
2672.pts-0.ubuntu (Detached)
2795.job1 (Detached)
2437.pts-0.ubuntu (Detached)
3 Sockets in /var/run/screen/S-diesel.
and we can connect to the job1 session, just by specifying its name:
$ screen -x job1
Switching between windows screen
All sessions are saved even when you are disconnected from the server and whatever is running in them continues to run
``Command execution monitoring
If you have several windows open, it may be useful to be able to monitor the activity in any of them. Go to the window with this command, press Ctrl - a m, you will see an inscription like this: "Window 0 (bash) is now being monitored for all activity". When something in the window will change, screen will beep, and in the list of windows the "@" symbol will appear after the number.
Screen scrolling in screen
To view the output of a command that has gone above the window boundary, you need to press Ctrl-a [
This will toggle the screen into Copy mode. To exit this mode just press Esc.
Configure screen
The screen is configured with the ~/.screenrc file, in your home directory. For example you could write there:
caption always "%{= 45}%{+b w}Screen: %n | %h %=%t %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
This will give you an all time visible list of open windows, and other useful information at the bottom of the screen.
Commands from the /etc/screenrc file and the .screenrc file in the user's home directory are also run by default when you start Screen. Many commands that can be used in configuration files have been covered in the tables above under "Text command". Below is an example of a Screen configuration from a .screenrc file:
# Disable the display of license information when starting Screen
startup_message off
# Open a shell to work
chdir
screen -t Work
# Open a shell to control the configuration
chdir /etc
screen -t Configuration
# Open shell to view logs
chdir /var/log
screen -t Logs
# Select first window after startup
select 0
This configuration file opens up three windows named Work, Configuration, and Logs in the user's private directory, in/etc, and in /var/log, respectively. After starting, the first window named Work will be displayed
Finish Screen
If for some reason the screen session stops responding, you can terminate it. To do this, connect to the desired session, then press Ctrl - a and type the command ":quit ".