Reattach To Terminals With Screen Command

Originally featured at:


screen command

What is the screen command ?

When you have long running jobs, you need to keep them active when you disconnect from server.
The screen command allows you to detach your terminal from you session.
By doing this there is no link between your session and your terminal and you can disconnect from server while your terminal and your jobs keep running.
Even better, once you reconnect to the server you can reattach the terminal to your new session and find your terminal exactly like you left it.

How does it work ?

Connect to your server with you username and password and issue the screen command:

[theoracleguy@fester001 ~]$ screen

you can also name your terminal with:

[theoracleguy@fester001 ~]$ screen -S name

Now you can run your long operation, for example a long sql script:

[theoracleguy@fester001 ~]$ sqlplus test/test @mylongrunningscript.sql

once your script is running, press “Ctrl-a” and then “Ctrl-d” to detach your terminal.
Your terminal is now detached. You can start more than one screen at a time if you want to run multiple tasks, just detach your current screen and issue the screen command again.
To see your screen processes, just type the following command:

[theoracleguy@fester001 ~]$ screen -ls
There are screens on:
21931.pts-1.veelaora001 (Detached)
10145.pts-1.veelaora001 (Detached)
2 Sockets in /var/run/screen/S-cmodiano.

Here I have 2 different terminal currently detached.
To reattach a screen when it is detached you can issue:

[theoracleguy@fester001 ~]$ screen -r screen_pid

Where screen_pid is the process id of the screen when you have multiple screens (if you have only one screen the screen_pid is not needed).
Instead of the pid you can also use the name of your screen if you named it.
This pid can be found by using the screen -ls command :
21931.pts-1.veelaora001 (Detached)

Log everything you do

Using the screen command you can log everything happens on your terminal in a file, to do that, once you have attached the right screen to your session, just use “Ctrl-a” and then “H“.
A file named screenlog.0 will be created in your home directory.

Share your terminal

Screen alows you to share your screen with someone else so he can see what you do and even type command in your terminal.
To do this the other person just have to login to the server with the same account and type:

[theoracleguy@fester001 ~]$ screen -x screen_name

This is really an awesome feature.

You can find the complete manual of screen here

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s