Le programme screen est fourni par le paquet du même nom. Il permet de créer des shells virtuels qu'on peut détacher du shell qui les a lancés et qu'on peut rattacher par la suite pour reprendre le contrôle de l'exécution d'un programme.

Pour lancer un nouveau shell, il suffit de lancer :

$ screen

On arrive alors dans un nouveau shell qui peut à son tour servir à lancer un programme qui doit continuer à s'exécuter lorsqu'on se déconnecte de la machine.

Pour détacher l'instance de screen, on utilise par défaut la combinaison de touche suivante : <CTRL>+A,<CTRL>+D.

On se retrouve alors dans le terminal depuis lequel l'instance de screen a été lancée.

Pour lister tous les terminaux lancés, on peut utiliser l'option -ls :

$ screen -ls
There is a screen on:
        1951.pts-0.workstation    (Detached)
        2634.pts-0.workstation    (Detached)
2 Sockets in /tmp/screens/S-username.

Pour rattacher le shell, on utilise l'option -r :

screen -r 1951.pts-0.workstation
/// 
Ou alors l'option @@-R@@ s'il n'y a qu'un seul shell dans la liste

screen -R ///

La beauté de la chose, c'est qu'on peut même reprendre le contrôle d'une application à distance si la machine qui exécute le shell est accessible par SHH (par exemple).