More rewords
This commit is contained in:
parent
ba9ce8fec9
commit
416631327e
1 changed files with 24 additions and 11 deletions
|
@ -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 "<commande>" <list_signaux>
|
||||
trap "<commande>" <liste_signaux>
|
||||
```
|
||||
|
||||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue