Description :

Screen est un multiplexeur de terminaux (tout comme tmux) permettant d'ouvrir plusieurs terminaux dans une même console, de passer de l'un à l'autre et de les détacher. Extrêmement pratique la session reste en tâche de fond même lorsqu'on n'est plus connecté au serveur.
Un petit inconvénients c'est que de base screen ne gère pas les splits verticaux.

Installation :

yum -y install screen

Fichier de configuration :

Je ne ferai pas l'affront de détailler le fichier de configuration, car il y a des tas de tutos sur Internet.
Le fichier de configuration est .screenrc dans son home.

deflogin on
autodetach on
vbell off
vbell_msg " !!! "
hardstatus off
defscrollback 44000
nethack on


#Combinaison d echappement a la place de Ctrl + a car utilise en bash
escape ^zz
caption     always        "%{+b rk}%H%{gk}|%c@%{yk}%d.%m.%Y|%72=Load: %l %{wk}"
hardstatus alwayslastline "%{= g} %{= w}%-Lw%{=r}%n%f* %t%{-}%+LW"
termcapinfo xterm ti@:te@

#Racourcis
# ne fonctionne pas toujours avec -k k1 (F1)
bindkey "^[[11~" select 1 #bind F1 a tab 1
bindkey "^[[12~" select 2 #bind F2 a tab 2
bindkey "^[[13~" select 3 #bind F3 a tab 3
bindkey "^[[14~" select 4 #bind F4 a tab 4
bindkey "^[[15~" title
#bindkey "^[[15~" split #bind F5 to split current screen
bindkey -k k6 split
bindkey -k k7 focus
bindkey -k k8 remove

bindkey -k k9 screen #binf F9 a creation de tab = Ctrl + a + c
bindkey -k k; windowlist -b #bind F10 pour lister les tabs disponibles
bindkey -k F1 kill  # bind f11 to kill terminal
bindkey -k F2 quit  # bind f12 to quit screen

bindkey -k kP prev #PageUp : tab precedent
bindkey -k kN next #PageDown : tab suivant

#Bash
screen -t bash
#path fabric
chdir "$HOME/fabric"
screen -t fabric 1
#set le cwd
chdir $HOME
#On fait le focus sur le tab 0
select 0

Commandes :

Lancer screen :

screen

Quitter screen :

Ctrl + d

Détacher "screen" (pour le récupérer plus tard) :

Ctrl + a + d

Attention : Ctrl + a est la combinaison par défaut, dans mon .screenrc c'est Ctrl + z (partie escape)

Lister les sessions screen sur le serveur :

screen -ls

ou

screen -list

Fournit une liste contenant le #_PID.Nom_de_session

Récupérer une session screen :

screen -r #_PID

ou

screen -r Nom_de_session

Créer une nouvelle session :

screen -S Production

Supprimer les sessions screen mortes (dead dans le screen -ls).

screen -wipe

Tuer une session spécifique.

screen -X -S Nom_de_session quit

Commande spécifique dans une session screen :

Ctrl + a + : + commande 

Commande peut être : :screen, :title, :split, :focus, ...

Enregistrer les sorties d'écran dans un fichier :

Ctrl + a :log on

Par défaut il va génére un fichier de log screenlog.# ou # correspond au numéro du tab/window. La même commande avec off pour stopper le log.

Pour que le titre de votre tab soit le hostname de la machine distante lors d'une connexion SSH, il suffit d'ajouter le code suivant dans le .bash_profile de l'utilisateur distant.

case "$TERM" in
        screen*) printf %bk%s%b%b \033 "${HOSTNAME%%.*}" \033 \0134;;
esac

Fichier source de .screenrc sur [GitHub]