How To Use Screen Command In Linux For Managing Remote SSH Sessions


A useful Linux command to run different commands on remote server when logged in via SSH is screen. This command is also very useful when your SSH connection drops and you want to resume from where you left. The screen command as the name suggests creates and manages different screens or terminals (similar to different workspaces but for the command line). You can then run different commands in each of these screens, disconnect them without ending the commands and reconnect them as needed.

It is also helpful when you don’t want multiple SSH sessions for running different Linux commands on the remote server. Also, it is great for executing a command that can take a while to complete like file transfers and so on.

For Ubuntu, Linux Mint and Debian, it can be installed using :

sudo apt install screen

It’s use is the same regardless of the Linux distro being used.

Here is how to use it:

Making new screens:

First, open Linux command line and type:

screen

running the screen command from linux command line

This will bring up the information screen about it.

screen information page

Now, hit Space to exit and type :

screen -ls

listing existing screen sessions from linux command line

It will now show that a screen is active and attached. To create another screen session, type in:

screen -S screenname

creating a new screen session from linux command line

It is a good idea to name different screens based on the tasks or purpose for them. So for example, to monitor say file transfers using rsync over ssh, name a screen accordingly. To monitor processes or check network connectivity, assign meaningful names and so on.

naming screens based on commands used

This will now display a blank screen indicating that the new screen is now active. You can now type in various Linux commands just like from the command line.

Switching between screens:

a new screen is created

To create another screen directly from an existing one, you can also use Ctrl-a and c keys. This however will create screen sessions without any names so using the -S option is better.

Also, as these screens are created, you can cycle back and forth between them. To do that, first press Ctrl-a and then the p key (previous screen) or the n (next screen) key. Commands if running in specific screens will be displayed (htop and ping in two different screens in this example ) when cycling between the screens.

a screen running htop command

ping command running in a screen session

Once these different screens are active, you can also directly drop back to the command line by pressing Ctrl-a and d. Whatever commands are running in each of these screens will continue to do so.

Attaching and detaching screens:

Now when the screens are listed again, they will have different statuses like Attached or Detached.

listing screens status from linux command line

This is useful when you want to run some commands but you keep disconnecting from the remote server either due to connectivity, idle session timeout or for not wanting to wait for commands to finish and remain logged in for the entire time. Simply make a screen for them and run the commands in there, then detach them. Even if you get disconnected, log back in and resume/reattach the active screen.

To resume detached screens, type in:

screen -r screenname

resuming a detached screen session from linux command line

When you then list the screens again, the specific screen status would have changed from Detached to Attached.

detached screen is now resumed

You can detach and resume any screen as needed with the d and r parameters.

detaching an active screen from linux command line

To close and exit any of the screens, simply type in:

exit

using the exit command to close the current screen

There will be a message of screen terminating, meaning that the current screen session is being closed. Again, if you don’t want to close the active screen but directly switch back to the command line, use Ctrl-a followed by d key.

You can also lock your screen session using the x parameter. To do that for the specific screen, go there and use the Ctrl-a and x key.

locking a screen session from linux command line

The screen session will then ask for your password to unlock it.

A List of common screen commands:

You can also get a list of key combinations by using Ctrl-a and ? when on an active screen.

a list of key combinations for screen command

Here is a quick list of some common screen commands  and what they do:

Also, to get details on various functions, use the man command :

man screen

man command for screen

This is a very handy tool when you want to manage your remote connections via SSH without having to retype commands after you get disconnected and relogin. However if the SSH server itself restarts or experiences network outage, then these screens will be lost.

All done.


Leave a Comment