diff --git a/content/articles/2022/bash_les_pieges/index.md b/content/articles/2022/bash_les_pieges/index.md index 5f46b6a..c6634a9 100644 --- a/content/articles/2022/bash_les_pieges/index.md +++ b/content/articles/2022/bash_les_pieges/index.md @@ -10,13 +10,13 @@ a eu un peu de succès. Comme toute les séries B un peu populaire, il lui falla une suite. Et bien la voici! Dans cette suite, il va être question de signaux, de **"trap"** et bien entendu -de Bash. +de *Bash*. ## Dis, c'est quoi un signal Un signal est ue sorte de notification envoyée à un processus lorsqu'un -événement particulier a eu lieu. Plus concrètement, lorsque un programme ne -réponds pas dans votre terminal et que vous faites Ctrl+C, le système envoi le +événement particulier a eu lieu. Plus concrètement, lorsqu'un programme ne +répond pas dans votre terminal et que vous faites Ctrl+C, le système envoi le signal SIGINT au processus en cours lui signifiant d'interrompre séance tenante toute action. Chaque signal est associé à un numéro @@ -35,11 +35,12 @@ SIGKILL | 9 | Term | Signal ”KILL” ## Les utiliser dans Bash : trap -Paf, l'intrigue arrive comme ça d'un coup: nous allons utiliser la commande -`trap` pour gérer les signaux. La commande est plutôt simple à utiliser : +Paf, l'intrigue arrive comme ça d'un coup : nous allons utiliser la commande +`trap` pour gérer les signaux. C'est une commande interne à *Bash* simple à +utiliser : ```bash -trap "" +trap "" ``` Attention cependant, tous les signaux ne peuvent pas être piégé: `SIGKILL` par @@ -113,6 +114,7 @@ do sleep 1 done ``` +Ce script est disponible en suivant [ce lien]({attach}files/premier_script.sh) La connexion principale est intiée par la fonction `connect`. Juste en dessous de l'appel de cette dernière nous trouvons notre instruction `trap`. Elle @@ -148,7 +150,7 @@ Close SSH main connection ``` Nous pouvons voir que notre fonction `cleanup` a bien été appelée à la fin de -notre script exécutée par le signal `EXIT` +notre script exécutée lors de la réception du signal `EXIT` ### Générer une erreur @@ -241,6 +243,9 @@ $ echo $? Le message de notre fonction `process_int` s'affiche et la fonction `cleanup` se lance automatiquement. +Le script modifié est disponible en suivant [ce +lien]({attach}files/second_script.sh) + ## Vérifier la connexion au master avec un signal Il est possible d'utiliser tout un tas de signaux et de les intercepter avec @@ -288,6 +293,9 @@ do done ``` +Le script modifié est disponible en suivant [ce +lien]({attach}files/troisieme_script.sh) + ### Lancer le script D'abord lançons le script et notons le numéros de PID: @@ -305,8 +313,8 @@ Puis dans un second terminal il nous suffit d'envoyer le signal: kill -USR1 9499 ``` -Le signal est alors reçu par notre script qui va donc exécuter la fonction -attachée : +Retour sur notre premier teminal, nous pouvons voir que le signal est alors reçu +par notre script qui va exécuter la fonction attachée : ```none [...] @@ -327,5 +335,10 @@ est similaire. **Le nettoyage des traces laissées par un script** est la principale utilisation documentée ci-et-là dans différents tutoriaux. Mais les possibilités offertes -par ce système de communication inter-processus dans vos script vont bien au -delà de ce simple usage. J'espère vous l'avois montré ici. +par ce système de communication inter-processus dans vos script **vont bien au +delà de ce simple usage**. J'espère vous l'avois montré ici. + +## Crédits + +L'image en entête de cet article est tirée du film *Star Wars, le retour du +Jedi* © Lucasfilms Ltd, Disney