You’re updating a server via SSH, or running other kind of vital operation that shouldn’t be interrupted in the middle, but you’re not lucky enough and the SSH connection fails or maybe you’re connected through a VPN (and “accidentally” you update the Docker engine serving the VPN, oops!).
In this kind of situations it’s better to use screen
command, it allows to define kind of persistent sessions, so if SSH is disconnected for what ever reason, the SSH session will not end automatically, it will be there waiting for you to re-attach the session (screen).
Installation
Just install it with your OS package manager, for instance in Debian/Ubuntu:
$ sudo apt install screen
That’s all, you can test the version with:
$ screen --version
Screen version 4.09.00 (GNU) 30-Jan-22
Start a new screen session
You can run an unnamed screen session just running:
$ screen
All sessions will be named, but it will get and auto-generated name.
If you prefer to give it a name, run it with -S
and the name, for instance if you plan to update the system:
$ screen -S update
Exit the screen session
Just run exit
command, only screen session will be closed, but not the SSH connection.
Listing sessions
Run:
$ screen -ls
There is a screen on:
2265696.pts-0.docker-03 (06/08/2024 02:52:34 PM) (Attached)
1 Socket in /run/screen/S-emilio.
If the session had name you will see this instead:
$ screen -ls
There is a screen on:
2266470.update (06/08/2024 02:55:32 PM) (Attached)
1 Socket in /run/screen/S-emilio.
Reattach to a session
To reattach run the screen command with -r
and the name of the session, for unnamed sessions you will need to list the sessions before (as we did on the previous section):
$ screen -r pts-0.docker-03
If the session had name, just pass the session name as parameter:
$ screen -r update
Detach from a session
If you just want to freeze a session you can detach from it, pressing CTRL + A
and then pressing D
(CTRL
should be previously released).