Introduction:
Screen or GNU
Screen is a terminal multiplexer. In other words, it means that you can start a
screen session and then open any number of windows (virtual terminals) inside
that session. Processes running in Screen will continue to run when their
window is not visible even if you get disconnected.
Screen is a powerful program for the command line that allows you to run multiple terminals similar to the way you would have multiple tabs in a web browser. Plus, you can connect and detach from the session like you would a remote desktop session (like VNC or Windows Remote Desktop).
Install Linux GNU Screen
The screen package is pre-installed on most Linux distros nowadays. You can check if it is installed on your system by typing:
Screen version 4.06.02 (GNU) 23-Oct-17
If you don't have screen installed
on your system, you can easily install it using the package manager of your
distro.
Install Linux
Screen on Ubuntu and Debian
Install Linux Screen on Oracle Linux
#yum install screen
Starting Linux Screen
To
start a screen session, simply type screen in your
console:
This
will open a screen session, create a new window, and start a shell in that
window.
Now that you have opened a screen session, you can get a list of commands by typing:
Ctrl+a ?
Starting Named Session
Named sessions are useful when you run multiple screen sessions. To create a named session, run the screen command with the following arguments:
#screen -S session_name
It’s always a good idea to choose a descriptive session name.
Working with Linux Screen Windows
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 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
screen is a much under utilised program, which provides the following functionality:
- Remote terminal session management (detaching or sharing terminal sessions)
- Remote terminal session management (detaching or sharing terminal sessions)
- unlimited windows (unlike the hardcoded number of Linux virtual consoles)
- unlimited windows (unlike the hardcoded number of Linux virtual consoles)
- scrollback buffer (not limited to video memory like Linux virtual consoles)
- scrollback buffer (not limited to video memory like Linux virtual consoles)
- copy/paste between windows
- copy/paste between windows
- notification of either activity or inactivity in a window
- notification of either activity or inactivity in a window
- split terminal (horizontally and vertically) into multiple regions
- split terminal (horizontally and vertically) into multiple regions
- locking other users out of terminal
- locking other users out of terminal
Note for nested screen sessions, use "Ctrl+a a" to send commands to the inner screen,
and the standard "Ctrl+a" to send commands to the outer screen.
Key | Action | Notes |
Ctrl+a c | new window | |
Ctrl+a n | next window | I bind F12 to this |
Ctrl+a p | previous window | I bind F11 to this |
Ctrl+a " | select window from list | I have window list in the status line |
Ctrl+a Ctrl+a | previous window viewed | |
Ctrl+a S | split terminal horizontally into regions | Ctrl+a c to create new window there |
Ctrl+a | | split terminal vertically into regions | Requires screen >= 4.1 |
Ctrl+a :resize | resize region | |
Ctrl+a :fit | fit screen size to new terminal size | Ctrl+a F is the same. Do after resizing xterm |
Ctrl+a :remove | remove region | Ctrl+a X is the same |
Ctrl+a tab | Move to next region | |
Ctrl+a d | detach screen from terminal | Start screen with -r option to reattach |
Ctrl+a A | set window title | |
Ctrl+a x | lock session | Enter user password to unlock |
Ctrl+a [ | enter scrollback/copy mode | Enter to start and end copy region. Ctrl+a ] to leave this mode |
Ctrl+a ] | paste buffer | Supports pasting between windows |
Ctrl+a > | write paste buffer to file | useful for copying between screens |
Ctrl+a < | read paste buffer from file | useful for pasting between screens |
Ctrl+a ? | show key bindings/command names | Note unbound commands only in man page |
Ctrl+a : | goto screen command prompt | up shows last command entered |
Detach from Linux Screen Session
You can detach from the screen session at any time by typing:
Now detach from this screen session by pressing Ctrl-a then d. This means "detach".
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:
#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
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
Customize Linux Screen
When screen is started, it reads its configuration parameters from /etc/screenrc and ~/.screenrc if the file is present We can modify the default Screen settings according to our preferences using the .screenrc file.
Here is a sample ~/.screenrc configuration with customized status line and few additional options:
~/.screenrc
# Turn off the welcome message
startup_message off
# Disable visual bell
vbell off
# Set scrollback buffer to 10000
defscrollback 10000
# Customize the status line
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
Basic Linux Screen Usage
Below are the most basic steps for getting started with screen:
On the command prompt, type screen
Run the desired program
Use the key sequence Ctrl-a + Ctrl-a to detach from the screen session.
Reattach to the screen session by typing screen -r.
Common problems
One thing that people new to screen often will do is start up multiple screen sessions and forget about them. Probably because they just ran screen without the -x option to reattach to the already running session. You can recover from this by running screen -x and either it will reattach to a single session or if you have multiple sessions open, it will list them out like this:
There are several suitable screens on: 25317.pts-39.ludwig (11/02/2009 04:49:52 PM) (Detached) 25214.pts-39.ludwig (11/02/2009 04:49:50 PM) (Detached) 25091.pts-39.ludwig (11/02/2009 04:49:46 PM) (Detached) Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Now you need to choose which session you want to reattach to. The number you need to specify is the first number shown on the line. So if I wanted to attach to the second one, I would run:
screen -x 25214
Then I could do whatever I need to in that session.
Dead sessions
Another common problem that usually is the result of a server reboot is when your screen sessions are dead and some files need to be wiped before you can continue. To fix this, you just need to run screen -wipe
screen -wipe
In this tutorial, you learned how to use Gnu Screen. Now you can start using the Screen utility and create multiple screen windows from a single session, navigate between windows, detach and resume screen sessions and personalize your screen terminal using the .screenrc file.
Migration Large Amount of data then
we can use screen utility.
Step 1:
Install Screen Utility.
[root@@erptstdb01
~]#rpm –ivh screen-4.0.3-16.el6.x86_64
Step 2: Run
Screen Command.
[root@@erptstdb01
~]#screen
Step 3(a): Put
your command whatever you want.
[root@@erptstdb01
~]#cd /oradata1
[root@erptstdb01
oradata1]#rsync -avzh /oradata1/app /oradata1_temp/
Step 3(b):
Detaching session
Ctrl + a + d
[root@erptstdb01
oradata1]#rsync -avzh /oradata1/oracle /oradata1_temp/
Step 3(c):
Detaching session
Ctrl + a + d
Step 4: List current attached screen
[root@erptstdb01
oradata1]#screen -ls
There are
screens on:
10835.pts-0. erptstdb01 (Detached)
10366.pts-0. erptstdb01 (Detached)
2 Sockets in /run/screens/S-linuxize.
Step 5: Reattach a session
[root@erptstdb01
oradata1]#screen -rx 10835
No comments:
Post a Comment