| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| issue214:c_c [2025/03/02 17:33] – d52fr | issue214:c_c [2025/03/06 10:12] (Version actuelle) – andre_domenech |
|---|
| Lorsque vous utilisez l'esperluette à la fin d'une commande ou d'un script shell, vous lui dites en gros d'aller jouer dans le parc pendant que vous continuez à taper dans le terminal. Si vous ne le faites pas, il pourrait monopoliser votre terminal. Pour la plupart d'entre nous, ce n'est pas un problème, car nous utilisons tous des émulateurs de terminaux modernes, où nous pouvons simplement ouvrir un autre onglet ou une autre instance. Le problème survient lorsque vous faites quelque chose sur un serveur distant via, par exemple, ssh, et que vous avez un script qui monopolise la ligne de commande, nous utilisons donc l'esperluette à la fin pour lui dire de jouer dans le parc (aller en arrière-plan). | Lorsque vous utilisez l'esperluette à la fin d'une commande ou d'un script shell, vous lui dites en gros d'aller jouer dans le parc pendant que vous continuez à taper dans le terminal. Si vous ne le faites pas, il pourrait monopoliser votre terminal. Pour la plupart d'entre nous, ce n'est pas un problème, car nous utilisons tous des émulateurs de terminaux modernes, où nous pouvons simplement ouvrir un autre onglet ou une autre instance. Le problème survient lorsque vous faites quelque chose sur un serveur distant via, par exemple, ssh, et que vous avez un script qui monopolise la ligne de commande, nous utilisons donc l'esperluette à la fin pour lui dire de jouer dans le parc (aller en arrière-plan). |
| |
| Cela dit, nous ne sommes pas toujours obligés de le faire d'une seule manière. Nous pouvons jeter un œil à ce qui est en train de cuire et le remettre au four, pour ainsi dire. Nous pouvons avoir plusieurs « tâches » en cours d’exécution en arrière-plan et nous pouvons basculer entre elles au fur et à mesure de leur exécution. Utiliser sleep dans un script est généralement un bon moyen de l’étirer, car je n’ai pas de scripts de longue durée sous la main. J’ai regardé un dessin animé avec un extraterrestre et son robot envahissant la Terre, alors j’ai créé un script simple : | Cela étant dit, nous ne sommes pas toujours obligés de le faire uniquement d'une seule manière. Nous pouvons jeter un œil à ce qui est en train de cuire et le remettre au four, pour ainsi dire. Nous pouvons avoir plusieurs « tâches » en cours d’exécution en arrière-plan et nous pouvons basculer entre elles au fur et à mesure de leur exécution. Utiliser sleep dans un script est généralement un bon moyen de l’étirer, car je n’ai pas de scripts de longue durée sous la main. Je regarde un dessin animé où un extraterrestre et son robot envahissent la Terre, alors j’ai créé un script simple : |
| |
| #!/usr/bin/env bash | #!/usr/bin/env bash |
| while true; do | while true; do |
| echo " Doom, doom, doom!" | echo " Doom, doom, doom!" |
| sleep 3 | sleep 3 |
| done | done |
| |
| We can call the job back into the house (foreground) from the park (background) with a simple: fg %1 - the challenge here is to remember the job number, should you have lots of jobs running - but we can talk about that later. Go ahead and try it, even if your typing looks wonky, don’t worry as the text you are seeing will not execute, only what you have typed. (You can just use just: %1, but it is good to know the proper way.)** | We can call the job back into the house (foreground) from the park (background) with a simple: fg %1 - the challenge here is to remember the job number, should you have lots of jobs running - but we can talk about that later. Go ahead and try it, even if your typing looks wonky, don’t worry as the text you are seeing will not execute, only what you have typed. (You can just use just: %1, but it is good to know the proper way.)** |
| |
| Enregistrez-le sous le nom doom.sh et nous pourrons l'exécuter avec : bash doom.sh et vous remarquerez que vous ne pouvez pas taper. Vous pouvez appuyer sur CTRL+z pour l'arrêter. Contrairement à appuyer sur CTRL+c, vous verrez un message, avec un numéro de tâche et ce qui s'est passé. J'ajouterai une image, mais je vous invite à le faire vous-même : | Enregistrez-le sous le nom doom.sh et nous pourrons l'exécuter avec : bash doom.sh ; vous remarquerez que vous ne pouvez pas taper. Vous pouvez appuyer sur CTRL+z pour l'arrêter. Contrairement à appuyer sur CTRL+c, vous verrez un message, avec un numéro de tâche et ce qui s'est passé. J'ajouterai une image, mais je vous invite à le faire vous-même : |
| |
| N'oubliez pas que l'arrêt ne signifie pas qu'il est mort ou annulé. Nous avons le numéro de tâche ; [1], dans mon cas, et je peux lui dire de continuer, mais à l'extérieur, dans le parc, avec : bg %1 (la syntaxe est bg %<numéro de tâche>) et je devrais à nouveau recevoir mes avertissements doom d'envahisseur Zim. Cependant, je peux taper, par exemple, ls -la - et j'obtiendrai une sortie (même si j'ai un scroller doom qui défile). | N'oubliez pas que l'arrêt ne signifie pas qu'il est mort ou annulé. Nous avons le numéro de tâche ; [1], dans mon cas, et je peux lui dire de continuer, mais à l'extérieur, dans le parc, avec : bg %1 (la syntaxe est bg %<numéro de tâche>) et je devrais à nouveau recevoir mes avertissements doom d'envahisseur Zim. Cependant, je peux taper, par exemple, ls -la - et j'obtiendrai une sortie (même si j'ai un scroller doom qui défile). |
| |
| Nous pouvons rappeler la tâche dans la maison (premier plan) depuis le parc (arrière-plan) avec un simple : fg %1 - le défi ici est de se souvenir du numéro de tâche, si vous avez beaucoup de tâches en cours d'exécution - mais nous pourrons en parler plus tard. Allez-y et essayez, même si votre frappe semble bancale, ne vous inquiétez pas car le texte que vous voyez ne s'exécutera pas, seulement ce que vous avez tapé. (Vous pouvez simplement utiliser : %1, mais il est bon de connaître la bonne méthode.) | Nous pouvons rappeler la tâche dans la maison (premier plan) depuis le parc (arrière-plan) avec un simple : fg %1 - le défi ici est de se souvenir du numéro de la tâche, si vous avez beaucoup de tâches en cours d'exécution, mais nous pourrons en parler plus tard. Allez-y et essayez, même si votre frappe semble bancale, ne vous inquiétez pas car le texte que vous voyez ne s'exécutera pas, seulement ce que vous avez tapé. (Vous pouvez simplement utiliser : %1, mais il est bon de connaître la bonne méthode.) |
| |
| |
| Only once you bring it to the foreground, you are asked for the password for the other machine (in my case), and only then will the copying commence and you can type bg to put it back into the background. So don’t immediately put everything to the background because you can.** | Only once you bring it to the foreground, you are asked for the password for the other machine (in my case), and only then will the copying commence and you can type bg to put it back into the background. So don’t immediately put everything to the background because you can.** |
| |
| Évidemment, dans le monde réel, vous compresserez probablement un gros fichier sur un serveur et le renverrez sur votre machine, comme par exemple une base de données MongoDB. Cela peut représenter des gigaoctets et prendre un certain temps, mais cela n'aura pas de sortie constante comme notre stupide doomscroller. Ici, nous utiliserions probablement simplement l'esperluette à la fin de la commande et en aurions terminé. | Évidemment, dans le monde réel, vous compresserez probablement un gros fichier sur un serveur et le renverrez sur votre machine, comme par exemple une base de données MongoDB. Cela peut représenter des gigaoctets et prendre un certain temps, mais cela n'aura pas de sortie constante comme notre stupide doomscroller. Ici, nous utiliserions probablement simplement l'esperluette à la fin de la commande et basta. |
| |
| Il y a une mise en garde ici : si quelque chose nécessite une saisie de l'utilisateur, comme dans le cas ci-dessus, je devrais mettre un mot de passe pour copier sur ma machine, sinon rien ne se passera et vous ressentirez une coupure, comme je l'ai fait ici : | Il y a une mise en garde ici : si quelque chose nécessite une saisie de l'utilisateur, comme dans le cas ci-dessus, je devrais mettre un mot de passe pour le copier sur ma machine, sinon rien ne se passera et vous ressentirez une coupure, comme je l'ai fait ici : |
| |
| admin@jumphost:~/fcm$ scp mongodb.zip edd@192.168.0.200:/home/ed/fcm & | admin@jumphost:~/fcm$ scp mongodb.zip edd@192.168.0.200:/home/ed/fcm & |
| If I made mistakes, please send them to: misc@fullcirclemagazine.org** | If I made mistakes, please send them to: misc@fullcirclemagazine.org** |
| |
| Si vous oubliez le numéro de tâche, surtout si vous avez plusieurs tâches en cours d’exécution, vous pouvez utiliser la commande « jobs » pour les vérifier. C’est pourquoi je dis toujours que vous devez nommer correctement vos scripts, pas seulement z.sh et x.sh et ainsi de suite (je nomme toujours le mien comme « a.sh » si je devais l’utiliser temporairement, mais c’est une mauvaise habitude et vous ne devriez pas le faire). Lorsque vous exécutez la commande jobs, vous verrez les tâches en cours d’exécution, ainsi que les tâches arrêtées (celles sur lesquelles vous avez appuyé sur CTRL+z). Lorsque vous obtenez les tâches en cours d’exécution imprimées à l’écran, vous pouvez voir un « + » et un « - » après le numéro de tâche. Le plus indique la dernière tâche que vous avez manipulée, qu’elle soit en cours d’exécution ou arrêtée, et le moins signifie celle juste avant. Pas la tâche précédente, remarquez, mais celle que vous avez précédemment manipulée, que ce soit en l’exécutant, en l’arrêtant, en l’avançant ou en la renvoyant en arrière. La raison pour laquelle c'est pratique, c'est que vous n'avez pas besoin de taper : bg %3 ou fg %3, s'il y a le plus à côté des trois, [3]+, car vous pouvez alors simplement taper bg ou fg et il agira sur celui avec le plus. | Si vous oubliez le numéro d'une tâche, surtout si vous avez plusieurs tâches en cours d’exécution, vous pouvez utiliser la commande « jobs » pour les vérifier. C’est pourquoi je dis toujours que vous devez nommer correctement vos scripts, pas seulement z.sh et x.sh et ainsi de suite (je nomme toujours le mien comme « a.sh » si je devais l’utiliser temporairement, mais c’est une mauvaise habitude et vous ne devriez pas le faire). Lorsque vous exécutez la commande jobs, vous verrez les tâches en cours d’exécution, ainsi que les tâches arrêtées (celles sur lesquelles vous avez appuyé sur CTRL+z). Lorsque vous obtenez les tâches en cours d’exécution imprimées à l’écran, vous pouvez voir un « + » et un « - » après le numéro de tâche. Le plus indique la dernière tâche que vous avez manipulée, qu’elle soit en cours d’exécution ou arrêtée, et le moins signifie celle juste avant. Pas la tâche précédente, remarquez, mais celle que vous avez précédemment manipulée, que ce soit en l’exécutant, en l’arrêtant, en l’avançant ou en la renvoyant en arrière. La raison pour laquelle c'est pratique, c'est que vous n'avez pas besoin de taper : bg %3 ou fg %3, s'il y a le plus à côté des trois, [3]+, car vous pouvez alors simplement taper bg ou fg et il agira sur celui avec le plus. |
| |
| Votre devoir consiste à créer 4 scripts. Ils n'ont pas besoin de sortie, ils ont juste besoin de dormir. Ensuite, exécutez-les et arrêtez-en 2 au hasard, avec CTRL+z. Maintenant, manipulez-les (vous pouvez en faire deux à la fois avec bg %1 %2), mais tapez « jobs » après chaque fois, afin de pouvoir voir le plus et le moins se déplacer. Facile comme bonjour, comme un citron pressé. Qu'en pensez-vous ? | Votre devoir consiste à créer 4 scripts. Ils n'ont pas besoin de sortie, ils ont juste besoin de dormir. Ensuite, exécutez-les et arrêtez-en 2 au hasard, avec CTRL+z. Maintenant, manipulez-les (vous pouvez en faire deux à la fois avec bg %1 %2), mais tapez « jobs » après chaque fois, afin de pouvoir voir le plus et le moins se déplacer. Facile comme bonjour. Qu'en pensez-vous ? |
| |
| Si j'ai fait des erreurs, veuillez les envoyer à : misc@fullcirclemagazine.org | Si j'ai fait des erreurs, veuillez les envoyer à : misc@fullcirclemagazine.org |
| |