====== Linux Screen ======
Apr 2020
\\
\\
\\
==== Overview ====
----
When using Linux via SSH, if you get disconnected then you cannot rejoin that session. So if you were doing something like downloading a large file, then you can not reconnect to see the progress (the download would have stopped anyway once you disconnected).
\\
\\
This guide is based around CentOS7 (or RedHat).
\\
\\
Screen is a 'Terminal Multiplexer' which means you can start Screen and then open terminal windows. These windows will stay open if you disconnect and you can reconnect with them when you next join.
\\
\\
----
==== Check for Screen ====
\\
Sounds great, do I have Screen?
\\
\\
From a terminal in Linux, enter the following:
\\
screen --version
If you see a version number in the format Screen version 4.01.00devel (GNU) 2-May-06, you are good to go, check out the section Using Screen. if you see the message screen: command not found then you will need to install screen.
\\
\\
----
==== Installing Screen ====
\\
To install screen, open a terminal window and use the following command:
\\
sudo yum install screen -y
\\
You will see something very similar to the following:
sudo yum install screen -y
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 8.3 kB 00:00:00
* base: centos.mirroring.pulsant.co.uk
* epel: ftp.nluug.nl
* extras: mirror.mhd.uk.as44574.net
* updates: mirror.vorboss.net
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/7): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/7): extras/7/x86_64/primary_db | 190 kB 00:00:00
(3/7): updates/7/x86_64/primary_db | 120 kB 00:00:00
(4/7): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(5/7): epel/x86_64/group_gz | 95 kB 00:00:00
(6/7): base/7/x86_64/primary_db | 6.1 MB 00:00:01
(7/7): epel/x86_64/primary_db | 6.8 MB 00:00:02
Resolving Dependencies
--> Running transaction check
---> Package screen.x86_64 0:4.1.0-0.25.20120314git3c2946.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================================================================
Package Arch Version Repository Size
================================================================================================================================================
Installing:
screen x86_64 4.1.0-0.25.20120314git3c2946.el7 base 552 k
Transaction Summary
================================================================================================================================================
Install 1 Package
Total download size: 552 k
Installed size: 914 k
Downloading packages:
screen-4.1.0-0.25.20120314git3c2946.el7.x86_64.rpm | 552 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : screen-4.1.0-0.25.20120314git3c2946.el7.x86_64 1/1
Verifying : screen-4.1.0-0.25.20120314git3c2946.el7.x86_64 1/1
Installed:
screen.x86_64 0:4.1.0-0.25.20120314git3c2946.el7
Complete!
\\
----
==== Using Screen ====
\\
To start screen, simply use:
\\
screen
\\
You can check what screen commands are available by: Press CTRL+a (let go of all keys) then hit ?
Screen key bindings, page 1 of 1.
Command key: ^A Literal ^A: a
break ^B b flow ^F f lockscreen ^X x pow_break B screen ^C c width W
clear C focus ^I log H pow_detach D select ' windows ^W w
colon : hardcopy h login L prev ^H ^P p ^? silence _ wrap ^R r
copy ^[ [ help ? meta a quit \ split S writebuf >
detach ^D d history { } monitor M readbuf < suspend ^Z z xoff ^S s
digraph ^V info i next ^@ ^N sp n redisplay ^L l time ^T t xon ^Q q
displays * kill K k number N remove X title A
dumptermcap . lastmsg ^M m only Q removebuf = vbell ^G
fit F license , other ^A reset Z version v
^] paste .
" windowlist -b
- select -
0 select 0
1 select 1
2 select 2
3 select 3
4 select 4
5 select 5
6 select 6
7 select 7
8 select 8
9 select 9
I login on
O login off
] paste .
| split -v
:kB: focus prev
\\
\\
**Starting a "Named Session"**
\\
\\
You can name your screen sessions, which makes it easier to find the one you were in, you can do this using the following syntax:
\\
screen -S session_name
\\
For example screen -S Orca
\\
\\
You will not see a lot happen, but a new window has opened and you are in a new session.
\\
\\
When you start a new screen session, it creates a single window with a shell in it.
\\
\\
You can have multiple windows inside a Screen session.
\\
\\
To create a new window with shell, type Ctrl+a then c, the first available number from the range 0...9 will be assigned to it.
\\
\\
Below are some most common commands for managing Linux Screen Windows:
\\
\\
Ctrl+a c Create a new window (with shell)
Ctrl+a " List all window
Ctrl+a 0 Switch to window 0 (by number )
Ctrl+a A Rename the current window
Ctrl+a S Split current region horizontally into two regions
Ctrl+a | Split current region vertically into two regions
Ctrl+a tab Switch the input focus to the next region
Ctrl+a Ctrl+a Toggle between the current and previous region
Ctrl+a Q Close all regions but the current one
Ctrl+a X Close the current region
\\
\\
**Detach from Linux Screen Session**
\\
\\
You can detach from the screen session at any time by typing:
\\
Ctrl+a d
\\
The program running in the screen session will continue to run after you detach from the session.
\\
\\
**Reattach to a Linux Screen**
\\
\\
To resume your screen session use the following command: (and this is the whole point of this article :) )
\\
screen -r
\\
\\
In case you have multiple screen sessions running on your machine, you will need to append the screen session ID after the r switch.
\\
\\
To find the session ID list the current running screen sessions with:
\\
screen -ls
\\
Output is: (your session numbers/names will differ)
\\
There are screens on:
10835.pts-0.linuxize-desktop (Detached)
10366.pts-0.linuxize-desktop (Detached)
2 Sockets in /run/screens/S-linuxize.
\\
If you want to restore screen 10835.pts-0, then type the following command:
\\
screen -r 10835
\\
\\
\\
----
\\
Plagurised from : [[https://linuxize.com/post/how-to-use-linux-screen/]] (i do this in case their site goes down/gets closed etc).