Difference between revisions of "Screen"

From UMIACS
Jump to navigation Jump to search
Line 1: Line 1:
 
=== Introduction ===
 
=== Introduction ===
GNU Screen, or "screen", is a window management program available on UMIACS UNIX hosts that splits a terminal into multiple windows that can each be used for a separate process. This can be very useful when a process will be running for a long time. The process is allocated to a virtual terminal created by screen, and it will run in the background while other terminals are being used or if the SSH session ends.
+
GNU Screen, or "screen", is a window management program available on UMIACS Linux hosts that allows multiplexing of a single terminal between multiple virtual consoles. Screen is also capable of separating programs from the shell that initially started it which allows a program to continue running even if the connection to the host has been lost. For this reason screen is typically used when a network connection is unstable and the process must remain running even if an SSH connection has dropped.  
  
 
=== Usage ===
 
=== Usage ===
To invoke screen, simply use the following command:
+
To invoke screen, simply use the following command in a terminal:
'''screen'''
+
# screen
  
 
Alternatively, to start a program with screen:
 
Alternatively, to start a program with screen:
'''screen vi program.c'''
+
# screen vi program.c
 +
This will invoke screen and, in the newly-created window, start editing the file program.c in vi.
 +
 
 +
You can have as many screen sessions as you’d like on a single host, however, keeping track of many sessions can become difficult. As a way to solve this screen offers the capability to give each session a unique name when you start it using the following:
 +
# screen -S [session name]
 +
 
 +
If you need to end your ssh session, but want your processes to keep running you can detach the screen session with:
 +
# screen -d
 +
Then exit as normal.
 +
 
 +
If you have multiple screen sessions you can detach and reattach them at any time. To list the current screen sessions running on a host use:
 +
# screen -ls
 +
 
 +
The output will be similar to this:
 +
# claw@idaho:~$ screen -ls
 +
#  There are screens on:
 +
# 26598.screenTest1 (Detached)
 +
# 18457.pts-0.idaho (Detached)
 +
# 2 Sockets in /var/run/screen/S-claw.
 +
 
 +
To reconnect to a specific screen session you may use either the screen number or name to reconnect using ‘screen -r’
 +
# claw@idaho:~$ screen -r 26598
 +
 
 +
or
 +
 
 +
# claw@idaho:~$ screen -r screenTest1
  
This will invoke screen and, in the newly-created window, start editing the file program.c in vi.
 
  
 +
===Common Keyboard Shortcuts===
 
Ctrl-A is the metacharacter for commands in screen; press it before every key command.  Some useful commands in screen:
 
Ctrl-A is the metacharacter for commands in screen; press it before every key command.  Some useful commands in screen:
  
* Ctrl-A + C (Creates a new window.)
+
* Ctrl-A + c (Creates a new window.)
 
* Ctrl-A + d (detach from current session)
 
* Ctrl-A + d (detach from current session)
 
* Ctrl-A + [0-9] (Switches to the window corresonding to the number, window 0 is the first window initialized by screen.)
 
* Ctrl-A + [0-9] (Switches to the window corresonding to the number, window 0 is the first window initialized by screen.)
 
* Ctrl-A + " (Presents a selection of screen windows from which to choose.)
 
* Ctrl-A + " (Presents a selection of screen windows from which to choose.)
 +
* Ctrl-A + Shift-A Rename the current screen window
 
* Ctrl-A + <SPC> / Ctrl-A + <BKSPC> (Switch to the next / previous window.)
 
* Ctrl-A + <SPC> / Ctrl-A + <BKSPC> (Switch to the next / previous window.)
 
* Ctrl-A + k (Kill the current window.)
 
* Ctrl-A + k (Kill the current window.)
* Ctrl-A + Ctrl-\ (Kill screen and all its windows.)
+
* Ctrl-A + \ (Kill the screen session and all its windows.)
  
 
See the documentation linked in this page to see a full list of Ctrl-A commands (5.1 Default Key Bindings).
 
See the documentation linked in this page to see a full list of Ctrl-A commands (5.1 Default Key Bindings).
 
To start a long-running process:
 
'''screen'''
 
then run your process.
 
 
If you want multiple sessions, name each session:
 
'''screen -S [session name]'''
 
 
If you need to end your ssh session, but want the process to keep running detach it:
 
'''screen -d'''
 
 
When you ssh back in, reattach your session:
 
'''screen -r'''
 
 
If you have named your session:
 
'''screen -r [session name]'''
 
  
 
=== .screenrc ===
 
=== .screenrc ===

Revision as of 21:06, 5 January 2015

Introduction

GNU Screen, or "screen", is a window management program available on UMIACS Linux hosts that allows multiplexing of a single terminal between multiple virtual consoles. Screen is also capable of separating programs from the shell that initially started it which allows a program to continue running even if the connection to the host has been lost. For this reason screen is typically used when a network connection is unstable and the process must remain running even if an SSH connection has dropped.

Usage

To invoke screen, simply use the following command in a terminal:

# screen

Alternatively, to start a program with screen:

# screen vi program.c

This will invoke screen and, in the newly-created window, start editing the file program.c in vi.

You can have as many screen sessions as you’d like on a single host, however, keeping track of many sessions can become difficult. As a way to solve this screen offers the capability to give each session a unique name when you start it using the following:

# screen -S [session name]

If you need to end your ssh session, but want your processes to keep running you can detach the screen session with:

# screen -d

Then exit as normal.

If you have multiple screen sessions you can detach and reattach them at any time. To list the current screen sessions running on a host use:

# screen -ls

The output will be similar to this:

# claw@idaho:~$ screen -ls
#  There are screens on:
# 	26598.screenTest1	(Detached)
# 	18457.pts-0.idaho	(Detached)
# 2 Sockets in /var/run/screen/S-claw.

To reconnect to a specific screen session you may use either the screen number or name to reconnect using ‘screen -r’

# claw@idaho:~$ screen -r 26598

or

# claw@idaho:~$ screen -r screenTest1


Common Keyboard Shortcuts

Ctrl-A is the metacharacter for commands in screen; press it before every key command. Some useful commands in screen:

  • Ctrl-A + c (Creates a new window.)
  • Ctrl-A + d (detach from current session)
  • Ctrl-A + [0-9] (Switches to the window corresonding to the number, window 0 is the first window initialized by screen.)
  • Ctrl-A + " (Presents a selection of screen windows from which to choose.)
  • Ctrl-A + Shift-A Rename the current screen window
  • Ctrl-A + <SPC> / Ctrl-A + <BKSPC> (Switch to the next / previous window.)
  • Ctrl-A + k (Kill the current window.)
  • Ctrl-A + \ (Kill the screen session and all its windows.)

See the documentation linked in this page to see a full list of Ctrl-A commands (5.1 Default Key Bindings).

.screenrc

Similar to .bashrc, the file .screenrc in a user's home directory can be used to customize each screen session's startup behavior. Commands listed in this file will be executed upon starting screen. See the link to documentation on screen at the bottom of this page for more information about screen commands (5.2 Command Summary).

Useful Links