Définir un excellent profil d’écran GNU à l’aide de .screenrc –

screen, l’utilitaire Linux qui permet de démarrer un «écran» à l’intérieur d’un terminal, est par défaut un peu sous-configuré. Apprenez à créer un excellent profil d’écran qui est chargé automatiquement chaque fois que vous utilisez screen.
Sommaire
Qu’est-ce que écran?
Screen est un utilitaire GNU (GNU est une grande collection de logiciels open source, et leur regroupement dans un système d’exploitation est communément appelé Linux) qui vous permet de démarrer un ou plusieurs écrans à l’intérieur de votre terminal.
Vous pouvez demander pourquoi je voudrais démarrer un écran dans mon terminal, et pouvez-vous définir écran mieux / plus loin? Sûr. Imaginez que vous utilisez un serveur distant de SSH et que votre connexion réseau est soudainement interrompue, en plein milieu de la migration de la base de données ou de la sauvegarde de production, qui s’exécutait dans la fenêtre de votre terminal. Cela arrive régulièrement, et le problème est que toute commande qui était en cours d’exécution lorsque la connexion s’est interrompue est maintenant terminée, quel que soit l’état dans lequel elle se trouvait.
Cette situation clairement ennuyeuse est celle que vous voulez éviter à tout prix. Non seulement cela peut laisser le système ou le progiciel dans un état indéfini, mais tout votre travail effectué jusqu’à présent peut être tout simplement perdu.
Bienvenue à screen
, l’utilitaire Linux qui vous permet de démarrer une session de terminal virtuel (un ‘écran‘) à l’intérieur de votre session de terminal, avec le principal et grand avantage qu’une telle session d’écran ne sera pas terminée chaque fois que la connexion réseau est interrompue, ou lorsque vous fermez la session de terminal qui a démarré le screen
session (le processus parent). Vous pouvez simplement attendre que votre connexion réseau revienne, ou ouvrir un autre terminal si vous n’êtes pas connecté via SSH et que vous travaillez uniquement sur la machine locale, et vous reconnecter simplement à votre session écran.
Génial? Installons rapidement écran alors si vous ne l’avez pas déjà fait:
Installation écran
À installer écran sur votre distribution Linux basée sur Debian / Apt (comme Ubuntu et Mint), exécutez la commande suivante dans votre terminal:
sudo apt install screen
À installer écran sur votre distribution Linux basée sur RedHat / Yum (comme RHEL, Centos et Fedora), exécutez la commande suivante dans votre terminal:
sudo yum install screen
Maintenant que l’écran est installé, vous pouvez commencer à l’utiliser immédiatement. Exécutez simplement screen
sur la ligne de commande et vous êtes dedans. Vous devrez peut-être appuyer sur entrée ou espace pour parcourir le screen
écran de démarrage.
Vous verrez une nouvelle invite de commande. Appuyez sur la séquence de touches CTRL+a
> CTRL+d
pour revenir à l’invite de commande de la session shell parent. Ensuite, vous pouvez exécuter screen -ls
pour voir une liste des sessions d’écran actives. Taper la commande (dans le shell parent dans lequel vous vous trouvez maintenant si vous avez suivi le texte à l’identique), screen -d -r
vous ramènera dans le screen
session, à condition qu’il n’y ait qu’une seule session d’écran active (vous pouvez en démarrer plusieurs).
S’il y a plus d’une session d’écran en cours d’exécution sur votre système (et que vous possédez), vous pouvez taper screen -d -r NAME
où NAME
est le nom d’un écran répertorié par screen -ls
, par exemple 367434.pts-1.roel1
, mais en spécifiant simplement n’importe quelle partie avant ou après le point (comme 367
ou pts
), qui identifie toujours de manière unique une session d’écran particulière, est également suffisante.
Voyons comment nous pouvons maintenant définir un excellent profil d’écran, basé sur un extrait de setup_server.sh, situé dans le référentiel Percona-QA GitHub (sous licence GPLv2), un script créé pour configurer un serveur pour les tests d’assurance qualité. Je ne vous recommande pas d’exécuter ce script car il est obsolète, utilisé comme référence uniquement et généralement exécuté manuellement étape par étape. La seule section que nous utiliserons est la .screenrc
code, reproduit ci-dessous.
Définition d’une excellente configuration .screenrc
Le .screenrc
file est un fichier de configuration caché dans votre répertoire personnel. Pour le modifier (il n’existera probablement pas encore, surtout si vous venez d’installer screen
, utilisez simplement votre éditeur de texte préféré et ouvrez le fichier ~/.screenrc
. Si vous êtes expérimenté avec Vim, vous pouvez simplement taper à l’invite de votre terminal vi ~/.screenrc
. Si vous souhaitez en savoir plus sur Vi / Vim, envisagez de lire notre article Définir un excellent profil Vim en utilisant .vimrc.
Une fois que vous avez ouvert ~/.screenrc
, ajoutez simplement le bloc de texte suivant:
# Paramètres généraux vbell sur vbell_msg '! Bell!' autodetach sur startup_message off defscrollback 10000 # Termcapinfo pour xterm termcapinfo xterm * Z0 = E[?3h:Z1=E[?3l:is=E[rE[mE[2JE[HE[?7hE[?1;4;6l # Do not resize window termcapinfo xterm* OL=1000 # Increase output buffer for speed # Remove various keyboard bindings bind x # Do not lock screen bind ^x # Idem bind h # Do not write out copy of screen to disk bind ^h # Idem bind ^ # Do not kill all windows/exit screen bind . # Disable dumptermcap # Add keyboard bindings bind } history bind k kill
If you do not want to use a text editor, or want to somehow script the installation of this .screenrc
file into many systems, you could use the following code instead, which will – whenever pasted, or executed from another script, create the file ~/.screenrc
for the user who is executing the script. Let’s call our script make_screenrc.sh
or similar.
#!/bin/bash # Create screen script ~/.screenrc touch ~/.screenrc if [ -z "$(cat ~/.screenrc|grep 'termcapinfo xterm')" ]; then cat << EOF> ~ / .screenrc # Paramètres généraux vbell on vbell_msg '! Bell!' autodetach on startup_message off defscrollback 10000 # Termcapinfo pour xterm termcapinfo xterm * Z0 = E[? 3h: Z1 = E[? 3l: is = E[r E[m E[2J E[H E[ ? 7h E[? 1; 4; 6l # Ne pas redimensionner la fenêtre termcapinfo xterm * OL = 1000 # Augmenter la mémoire tampon de sortie pour la vitesse # Supprimer diverses liaisons de clavier bind x # Ne pas verrouiller la liaison d'écran ^ x # Idem bind h # Ne pas écrire une copie de l'écran sur le disque bind ^ h # Idem bind ^ # Ne pas tuer toutes les fenêtres / quitter l'écran bind. # Désactiver dumptermcap # Ajouter des liaisons clavier bind} history bind k kill EOF fi
Le script prédéfinit un certain nombre de paramètres, et la plupart de ceux ici sont assez explicites. Par exemple, startup_message off
éteint simplement l’écran Splash que nous avons vu plus tôt. defscrollback 10000
définit notre défilement à 10000 lignes (vous pouvez accéder au mode défilement / édition en appuyant sur la séquence de touches CTRL+a
> CTRL+ESC
et vous pouvez quitter ce mode en appuyant une ou deux fois sur ESC).
Nous activons également une cloche virtuelle (car nous n’entendons pas le haut-parleur d’un serveur distant émettre un bip) en utilisant le vbell on
et vbell_msg '!Bell!'
commandes qui définissent le message de cloche virtuelle sur '!Bell!'
. J’ai cependant constaté que la cloche virtuelle ne fonctionne souvent pas.
Ensuite, nous définissons des termcapinfo
codes pour agrandir le tampon de sortie et ajuster le redimensionnement de la fenêtre. Nous supprimons également diverses combinaisons de touches potentiellement ennuyeuses et ajoutons quelques paramètres de clavier pratiques.
Tout ce que nous avons à faire pour activer ce nouveau .screenrc
la configuration consiste à ouvrir un nouveau screen
session. Nous allons maintenant bénéficier des paramètres nouvellement définis.
Emballer
Définir un excellent défaut .screenrc
fichier aide lorsque vous utilisez screen
beaucoup. La désactivation de l’écran de démarrage, l’augmentation du défilement et l’amélioration de la mémoire tampon de sortie pour la vitesse ne sont que quelques-unes des choses que nous avons faites dans notre .screenrc
modèle. Profitez de l’utilisation de screen et du modèle .screenrc!