More rewords

This commit is contained in:
Yorick Barbanneau 2022-11-16 00:54:51 +01:00
parent ba9ce8fec9
commit 416631327e

View file

@ -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! une suite. Et bien la voici!
Dans cette suite, il va être question de signaux, de **"trap"** et bien entendu Dans cette suite, il va être question de signaux, de **"trap"** et bien entendu
de Bash. de *Bash*.
## Dis, c'est quoi un signal ## Dis, c'est quoi un signal
Un signal est ue sorte de notification envoyée à un processus lorsqu'un 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 événement particulier a eu lieu. Plus concrètement, lorsqu'un programme ne
réponds pas dans votre terminal et que vous faites Ctrl+C, le système envoi le 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 signal SIGINT au processus en cours lui signifiant d'interrompre séance tenante
toute action. Chaque signal est associé à un numéro toute action. Chaque signal est associé à un numéro
@ -35,11 +35,12 @@ SIGKILL | 9 | Term | Signal ”KILL”
## Les utiliser dans Bash : trap ## Les utiliser dans Bash : trap
Paf, l'intrigue arrive comme ça d'un coup: nous allons utiliser la commande 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 : `trap` pour gérer les signaux. C'est une commande interne à *Bash* simple à
utiliser :
```bash ```bash
trap "<commande>" <list_signaux> trap "<commande>" <liste_signaux>
``` ```
Attention cependant, tous les signaux ne peuvent pas être piégé: `SIGKILL` par Attention cependant, tous les signaux ne peuvent pas être piégé: `SIGKILL` par
@ -113,6 +114,7 @@ do
sleep 1 sleep 1
done 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 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 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 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 ### Générer une erreur
@ -241,6 +243,9 @@ $ echo $?
Le message de notre fonction `process_int` s'affiche et la fonction `cleanup` se Le message de notre fonction `process_int` s'affiche et la fonction `cleanup` se
lance automatiquement. 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 ## Vérifier la connexion au master avec un signal
Il est possible d'utiliser tout un tas de signaux et de les intercepter avec Il est possible d'utiliser tout un tas de signaux et de les intercepter avec
@ -288,6 +293,9 @@ do
done done
``` ```
Le script modifié est disponible en suivant [ce
lien]({attach}files/troisieme_script.sh)
### Lancer le script ### Lancer le script
D'abord lançons le script et notons le numéros de PID: 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 kill -USR1 9499
``` ```
Le signal est alors reçu par notre script qui va donc exécuter la fonction Retour sur notre premier teminal, nous pouvons voir que le signal est alors reçu
attachée : par notre script qui va exécuter la fonction attachée :
```none ```none
[...] [...]
@ -327,5 +335,10 @@ est similaire.
**Le nettoyage des traces laissées par un script** est la principale utilisation **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 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 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. 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