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!
|
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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue