Last month, we looked a bit more in-depth at jobs, foreground and background processes. This allows me to segue into screen. Though we chatted about it before, (2022?), it was to segue into tmux. We can touch on tmux again - it is great - or tilix, but know that in the real world, you will probably connect to a jump host or a server that has only the OS installed, so things like tmux will not be available for you to use. Hence why I like to start off with screen, not that I’m old-skool or anything, I like tmux/tilix more, but trust me, you will get stuck with screen more often than not. What is screen? Well, screen is a virtual terminal that allows you to run jobs, even after closing your terminal (continues the process). To demonstrate what I mean, open a terminal and type: evince Your document viewer opens. Now close the terminal and you should get a warning, but close it anyway. What happened to evince? So are we on the same page? The evince process was terminated when your terminal emulator was closed. We don’t want this when working on a remote machine. Imagine you have to zip up log files on remote machines and copy them elsewhere and you also need to go home as it is after five and you would rather not sit around for another hour at work, or you are busy hacking your school computer, running a brute-force attack, but it could take hours and you need to be home by 9, you don’t want to stop dead in the water and start again from scratch tomorrow, you want it to finish. What is nice about screen, is that you can have a few instances running at once and switch between the processes running in each. However, do not assume it is installed. You may need to add it with: sudo apt install screen – on both ends where you intend to use it. The man page for screen is very long, and it uses that emacs type notation for key bindings, that look like this: C-a meaning CTRL+a. (Important, file for later use).
Le mois dernier, nous avons approfondi les tâches, les processus de premier plan et d'arrière-plan. Cela me permet d'aborder « screen ». Bien que nous en ayons déjà parlé (en 2022 ?), c'était pour passer à tmux. Nous pouvons reparler de tmux – c'est génial – ou de tilix, mais sachez que dans la réalité, vous vous connecterez probablement à un hôte de passage ou à un serveur sur lequel seul le système d'exploitation est installé, donc des fonctionnalités comme tmux ne seront pas disponibles. C'est pourquoi je préfère commencer par screen. Non pas que je sois de la vieille école, je préfère tmux/tilix, mais croyez-moi, vous serez souvent bloqué avec screen.
Qu'est-ce que screen ? Screen est un terminal virtuel qui vous permet d'exécuter des tâches, même après la fermeture de votre terminal (poursuite du processus). Pour illustrer ce que je veux dire, ouvrez un terminal et saisissez : evince.
Votre visionneuse de documents s'ouvre. Fermez le terminal et vous devriez recevoir un avertissement, mais fermez-le quand même. Qu'est-il arrivé à evince ? Sommes-nous sur la même longueur d'onde ? Le processus evince a été interrompu à la fermeture de votre émulateur de terminal. Ce problème est à éviter sur une machine distante. Imaginez : vous devez compresser les fichiers journaux sur des machines distantes et les copier ailleurs, et vous devez rentrer chez vous après 17 h et vous préférez éviter de rester assis une heure de plus au travail. Ou encore, vous êtes occupé à pirater l'ordinateur de votre école et à lancer une attaque par force brute, mais cela peut prendre des heures et vous devez être rentré à 21 h. Vous ne voulez pas vous arrêter net et recommencer de zéro demain, vous voulez que tout soit terminé.
L'avantage de screen, c'est que vous pouvez exécuter plusieurs instances simultanément et basculer entre les processus en cours d'exécution. Cependant, ne présumez pas qu'il est installé. Vous devrez peut-être l'ajouter avec : sudo apt install screen – aux deux extrémités où vous souhaitez l'utiliser. La page de manuel de screen est très longue et utilise la notation de type Emacs pour les raccourcis clavier, qui ressemble à ceci : C-a qui signifie CTRL+a. (Important, à archiver pour une utilisation ultérieure).
Fire up your terminal and type: screen If you are directly on a TTY, you should not see this, it would seem that nothing happened. However, we can sort of get a grasp by doing the following. Type: echo “start” press CTRL+a let go of the keys and press c echo “middle” press CTRL+a let go of the keys and press c echo “end” press CTRL+a let go of the keys and press p press CTRL+a let go of the keys and press n What happened? Now: press CTRL+a let go of the keys and press 0 press CTRL+a let go of the keys and press 2 press CTRL+a let go of the keys and press “ You should be able to navigate with the up and down arrow key. If you use it often, it will be good to know: press CTRL+a let go of the keys and press A (Capital a) and name this screen something. I renamed the middle one, “Centre” and when I bring up my list, I can see it. Your turn. So now, instead of it just saying “bash”, it has a name and you should see a ‘*’ indicating which screen you are currently on. Start a ping in one of those screens and switch away and go back.
Lancez votre terminal et saisissez :
screen
Si vous êtes directement sur un TTY, vous ne devriez pas voir ceci ; c'est comme si rien ne s'était passé.
Cependant, nous pouvons vous donner une idée en procédant comme suit :
Saisissez :
echo “début”
appuyez sur CTRL+a, relâchez les touches et appuyez sur c
echo “milieu”
appuyez sur CTRL+a, relâchez les touches et appuyez sur c
echo “fin”
appuyez sur CTRL+a, relâchez les touches et appuyez sur p
appuyez sur CTRL+a, relâchez les touches et appuyez sur n
Que s'est-il passé ?
Maintenant :
Appuyez sur CTRL+a, relâchez les touches et appuyez sur 0
Appuyez sur CTRL+a, relâchez les touches et appuyez sur 2
Appuyez sur CTRL+a, relâchez les touches et appuyez sur “
Vous devriez pouvoir naviguer avec les flèches haut et bas.
Si vous l'utilisez souvent, voici un conseil :
Appuyez sur CTRL+a, relâchez les touches et appuyez sur A (A majuscule) et donnez un nom à cet écran.
J'ai renommé celui du milieu « Centre » et lorsque j'affiche ma liste, je le vois. À vous de jouer.
Maintenant, au lieu d'afficher simplement « bash », il a un nom et vous devriez voir un astérisque (*) indiquant l'écran sur lequel vous vous trouvez. Lancez un ping sur l'un de ces écrans, puis changez de direction et revenez en arrière.
If you were wide awake, you may have noticed “detach” in the man page, obviously it is: press CTRL+a let go of the keys and press d. You should have your normal bash prompt back (some distributions will let you know with a message, like Ubuntu, but don’t count on it). Now for the part I want you to compare with what happened to evince, close the terminal. Open a new one, it does not even have to be a gnome terminal. Now type: screen -ls That (detached) message, is the one we just disconnected from, and since it is “recent”, we can use: screen -R -to reattach to that session, or if you detached more than one or had multiple sessions open, like I did, you can use the PID displayed, to connect to it, but that is a lowercase “r”. (Check the man page for more “d” and “r” options…). Try it yourself quickly, I’ll wait….
Si vous étiez bien réveillé, vous avez peut-être remarqué « detach » dans la page du manuel, c'est bien ça :
Appuyez sur CTRL+a, relâchez les touches et appuyez sur D.
Vous devriez avoir votre invite de commande bash habituelle de retour (certaines distributions, comme Ubuntu, vous le signaleront par un message, mais n'y comptez pas trop).
Maintenant, pour la partie que je souhaite comparer avec ce qui s'est passé avec evince, fermez le terminal. Ouvrez-en un nouveau ; il n'est même pas nécessaire que ce soit un terminal Gnome.
Saisissez maintenant :
screen -ls
Ce message (detach - détaché) est celui dont nous venons de nous déconnecter. Comme il est « récent », nous pouvons utiliser : screen -R pour nous reconnecter à cette session. Si vous en avez détaché plusieurs ou si plusieurs sessions étaient ouvertes, comme moi, vous pouvez utiliser le PID affiché pour vous y connecter, mais il s'agit alors d'un « r » minuscule. (Consultez la page du manuel pour plus d'options pour « d » et « r »…).
Essayez vite, j'attends…
One last thing: just like screens, you can also name your sessions (though I have never used it, as usually my session is one screen to one server), and you can bake that into a configuration file, but I feel we are stepping outside newbie territory. When starting a screen session, use -S (capital “S”) followed by a name (I named it FCM). You can also name a session from *inside screen, you just need to list all the open screens first, with: press CTRL+a let go of the keys and press “ press CTRL+a let go of the keys and press : You should now see a “:” at the bottom of the terminal. Type sessionname (one word) Start naming and press <enter> Now for the fun part, to kill a screen: press CTRL+a let go of the keys and press k and what about killall, I hear you ask, well: press CTRL+a let go of the keys and press \ And that should cover the basics for any newbie, I really don’t think you will need more in a loooong time, but have a look at the man page, and see that this is a grand daddy page! There are options to fit everyone’s use case. I hope you followed along in your terminal, or it will be forgotten tomorrow. Any mistakes, please write to: misc@fullcirclemagazine.org
Une dernière chose : tout comme pour les écrans, vous pouvez nommer vos sessions (même si je ne l'ai jamais utilisé, car, dans ma session, c'est généralement un écran pour un serveur), et vous pouvez l'intégrer dans un fichier de configuration, mais je pense que nous sortons du domaine des débutants. Au démarrage d'une session d'écran, utilisez -S (un « S » majuscule) suivi d'un nom (je l'ai appelé FCM). Vous pouvez également nommer une session depuis *l'intérieur de screen. Il vous suffit de lister tous les écrans ouverts en premier :
Appuyez sur CTRL+a, relâchez les touches et appuyez sur ”
Appuyez sur CTRL+a, relâchez les touches et appuyez sur :
Vous devriez maintenant voir un « : » en bas du terminal. Saisissez nom_session (un mot).
Commencez à nommer et appuyez sur <Entrée>.
Maintenant, la partie amusante, pour fermer un écran :
Appuyez sur CTRL+a, relâchez les touches et appuyez sur K.
Et pour « killall », me direz-vous ? Eh bien :
Appuyez sur CTRL+a, relâchez les touches et appuyez sur \.
Voilà qui devrait couvrir les bases pour les débutants. Je ne pense pas que vous en aurez besoin de plus avant looooongtemps, mais jetez un œil à la page du manuel : c’est une page incontournable ! Il y a des options pour tous les cas d’utilisation. J’espère que vous avez suivi la procédure dans votre terminal, sinon ce sera oublié demain.
En cas d’erreur, veuillez écrire à : misc@fullcirclemagazine.org