Screen: A Linux Application Every Developer Should Know About
Posted on 2018-12-31 13:35 in Blog
Screen: A Linux Application Every Developer Should Know About
In a previous life, at least it feels like a previous life, I found myself performing a fair amount of remote load testing. I would SSH into a box. Start the application under test, and then need to start any number of monitoring/ metric gathering scripts. Periodically, was the test was progressing, I would return to check on the status of those scripts to determine if there was an issue with the environments real-time.
The trouble I faced, if I left the command running in my terminal, and the SSH session was lost; then the script would be killed. If I launched the process in the background, then I ran the problem of identifying the name of the auto-generated log file that I needed to tail to check on the status. Enter screen.
Screen is a Linux based command line tool to stand up a virtual terminal with all kinds of wonderful features. As the man page describes….
Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells). Each virtual terminal provides the functions of a DEC VT100 terminal and, in addition, several control functions from the ISO 6429 (ECMA 48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows moving text regions between windows.
At its heart, it allows the developer to SSH into a machine and start a long lived terminal session. Should the SSH session fail, you simply reestablish the connection to the server and then reattach to the running screen session. Furthermore, a single terminal session could spawn several screen sessions, allowing for the concurrent running of several scripts that you want to periodically monitor.
Here is a break down of my most often used commands.
Command | Description |
---|---|
screen | Launch an un-named screen session. |
screen –list | Display a list of currently running screen sessions. |
screen –S |
Launch a named screen session. |
screen –r | Attached to a running screen session. (only works if there is exactly one running session.) |
screen –r |
Attach to a running screen session by name. |
Once inside a screen session, there are a number of useful commands. However, in order to activate the command mode, you must type CNTL-A. Otherwise the command will be interpreted by the terminal within the screen session.
Command | Description |
---|---|
CNTL+a → d | detach, leaving the session running |
exit | Kills the running screen session. |