Last updated on March 8, 2021 by Brian Nichols
Similar to many tools utilized by system administrators, the Linux screen
command is another great tool that helps with productivity. screen
can be seen as an alternative to Tmux, but it has many other useful options outside of just saving screen space. screen
allows you to create multiple sessions of terminals/interactive shells. In this tutorial I will give you a quick rundown of screen
and present several use cases of the command.
screen
Command To highlight some of the main benefits of screen
:
screen
will live in an "attached" state until you reattach at a later time to continue where you left off.
screen
session that will live in a detached state.
screen
to any process that is expecting input.
screen
on LinuxYou can install screen
by utilizing your operating system package manager.
$ sudo apt-get install screen
$ sudo yum install screen
screen
Session Basicsscreen
SessionTo start a new screen
session, simply type:
$ screen
You will now see a new blank terminal opened up. To check whether or not you are inside a screen
session, type this command:
$ echo $TERM
If you are inside a screen
session, the output will be screen
or something similar (e.g., screen.xterm-256color
). Otherwise, it will print xterm
.
screen
SessionNow let's detach from our screen
session. Type CTRL-a d
to detach. You will see some output showing that you detached from your session.
You are now back to your original terminal.
screen
SessionsNext, let's check what screen
sessions are running/available. The following command will display a list of currently available screen
sessions and their respective status (i.e., attached or detached). Since there is only one session available, you will see your one screen
session. You will also see that you are currently detached from that session.
$ screen -ls
screen
SessionNext, in order to connect back to your terminal in the screen
session you created earlier, you will need to attach to that session again with:
$ screen -x
If there is more than one available screen
sessions, you will need to specify the name of the session after -x
(see the multi-session example below).
screen
SessionIf you type exit
inside a screen
session, the session will be automatically terminated, and you won't be able to re-attached to it later.
screen
SessionWhen you are inside a screen
session, you will notice that you cannot scroll up and down your terminal session using the terminal program's scrollbar. That is because the output of your terminal session is controlled by the screen
utility. To enable scrolling inside a screen
session, you need to press "CTRL-a ESC" to enter the so-called "copy" mode. Once in that mode, you can use "Up"/"Down" keys or your mouse' scroll wheel to scroll up/down your screen
session. Press "ESC" again to exit the "copy" mode.
That's the quick rundown of screen
command. While some system administrators' screen
knowledge stops here, this tool has many other options that again further help with productivity. In the rest of the tutorial I will show several example use cases of screen
.
screen
If you are attached to your screen
session over SSH, working away, and you lose your SSH connection, your screen
session will still be running. The screen
session will be in an attached state even though you lost a connection. You can see this after logging back in and running your screen -ls
command:
To reattach to the screen
session that is still in the "attached" state, run the following:
$ screen -d -x
You will then be able to resume the SSH terminal session where you left off.
screen
SessionsWhat if you want to have multiple screen
sessions? For example, you have multiple coworkers working on the same server under the same user account? Multiple screen
sessions can be helpful in this way. Further, you can also help dampen the confusion of multiple screen
sessions by naming each session. To create a name for your screen
session, use -S <session-name>
option:
$ screen -S session1
Now you can run your screen -ls
command again and see the multiple screen
sessions. If you want to connect to a specific session, use -x <session-name>
option:
$ screen -x session1
Alternatively, you can specify the PID of the screen
session you want to connect to:
$ screen -x 925247
screen
Another great option within screen
is the ability to send commands through screen
if you have a running process that is waiting for input. For example, when starting a dedicated Minecraft server on your Linux server, you are not able to use your terminal. The prompt has been replaced with the server prompt that is waiting for input/commands. This is where screen
comes in handy. You can create your screen
session, run the Minecraft server, and detach to go back to your normal terminal prompt. Then, with screen
, you can send commands through it without attaching to your session. To send commands through screen
, run the following.
$ screen -S session1 -X stuff "save$(printf \\r)"
The above command utilizes -S
for the session name, -X stuff
is used as an input buffer to your indicated screen
session, with the save
as the command you are wanting ran. You also want to include the "$(printf \\r)
" to input a carriage return to run the command.
screen
SessionAnother built-in option within screen
is logging. One thing you will notice through your increased experience with screen
is that it can be difficult to scroll up through your terminal history from within your screen
session. You are able to scroll through your screen
session, but it takes keystrokes and fiddling up and down the screen as describe above. Instead, an easier way to look through your terminal history is the logging option with screen
. To utilize logging for your screen
sessions, simply run the -L
command line option with screen
:
$ screen -L
When you're needing to check your terminal history, simply detach from your screen
session and view your log. By default, the log for screen
lands in the cwd
(current working directory), which means where you first launched the screen session
. If you are unsure where the cwd
is for your screen
session, you can check it by typing CTRL-a :exec pwd
. This will output on screen the cwd
- that is where you log will be located. Also by default, the log file name will be named screenlog.0
.
This tutorial gave you a quick rundown of the basics on utilizing screen
on Linux hosts. It has many other benefits other than saving screen space, as discussed by detaching and reattaching on other computers/devices, saving precious work from being lost due to network disconnects, and sending commands to long-running processes. Make sure to check out screen
and the many other commands/options this tool can use.
This website is made possible by minimal ads and your gracious donation via PayPal or credit card
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.
Xmodulo © 2021 ‒ About ‒ Write for Us ‒ Feed ‒ Powered by DigitalOcean