Start a conversation

Using screen in Linux to Keep SSH Sessions Running

With screen you can create one or more sessions in your current SSH terminal which allows you to leave them (and the commands running) in the background should you disconnect from your session. 

Just run:

screen

to start it. This creates a screen session or window (although you don't see it as such) in your current SSH terminal:

Linux screen command started

Press Space or Return to get to the command prompt:

Linux screen command prompt


 These important commands begin with CTRL+a to distinguish them from normal shell commands:

  • Ctrl+a c - Creates a new screen session so that you can use more than one screen session at once.
  • Ctrl+a n - Switches to the next screen session (if you use more than one).
  • Ctrl+a p - Switches to the previous screen session (if you use more than one).
  • Ctrl+a d - Detaches a screen session (without killing the processes in it - they continue).

To close a screen session where all tasks are finished you can type

exit

Now let's play around with screen a little bit. In our screen window we run the command

top

This should look like this:

Top command running within screen

Now let's create another screen session by typing

Ctrl+a c

A new, blank screen session opens, and there we run

nano ~/new-text-file.txt

to open nano and edit a text file.  


You can browse your two screen sessions by running:

Ctrl+a n

or

Ctrl+a p


To detach a screen session and return to your normal SSH terminal, type:

Ctrl+a d


On your original / normal SSH terminal,  run:

screen -ls

to get a list of your current screen sessions:

There are screens on:
        2477.pts-0.server1      (Detached)
        2522.pts-0.server1      (Detached)
2 Sockets in /var/run/screen/S-root.

To reconnect to one of these sessions, run:

screen -r 2477.pts-0.server1

where 2477.pts-0.server1 is the name of one of the sessions from the screen -ls output.

To leave and finish a screen session, finish all current tasks in it (top can be finished by typing q, etc) and then type:

exit

You will then fall back to another screen session (if you use more than one) or to the normal SSH terminal, if no more screen sessions are open.

If you want to learn more about screen, run:

man screen

My Connection Dropped - What Can I Do?

Now let's assume you had a long running command or process in a screen session, something which normally takes a long time, and suddenly your connection drops. Thanks to screen your work isn't lost. Once your connection is back up, log in to your system with SSH again and run

screen -ls

From the results pick one session (e.g. 2477.pts-0.server1) and reattach to it:

screen -r 2477.pts-0.server1

If you picked the right session, you should find your command still running  (if it hasn't finished in the meantime) so that you can continue your work.

Choose files or drag and drop files
Was this article helpful?
Yes
No
  1. Jed Krisch

  2. Posted
  3. Updated

Comments