Commandes Linux

Commande de piège Bash

Commande de piège Bash
Une commande bash intégrée utilisée pour exécuter une commande lorsque le shell reçoit un signal est appelée « trap ». Lorsqu'un événement se produit, bash envoie la notification par n'importe quel signal. De nombreux signaux sont disponibles en bash. Le signal le plus courant de bash est SIGINT (Signal Interrupt). Lorsque l'utilisateur appuie sur CTRL + C pour interrompre un processus à partir du terminal, ce signal est envoyé pour avertir le système.  Comment vous pouvez utiliser la commande trap pour gérer différents types de signaux est expliqué dans ce tutoriel.

Syntaxe:

trap [-lp] [[arg] spéc_signal… ]

ou alors

piège [action] [signal]
Clé La description
-je Il est utilisé pour afficher la liste de tous les noms de signaux avec le numéro correspondant.
-p Il est utilisé pour afficher la commande de signal ou la commande de trap pour signal_spec.
argument Il est utilisé pour exécuter une commande lorsque le shell reçoit le(s) signal(s).
spéc_signal Il contient le nom ou le numéro du signal.

Commande Trap sans aucune option et arg

Exécutez la commande suivante depuis le terminal pour afficher la liste de toutes les commandes associées à chaque condition. Si aucune commande 'trap' n'est définie avant, la commande suivante n'affichera aucune information.

$ piège

Commande d'interception avec l'option -l

Exécutez la commande suivante depuis le terminal pour afficher la liste de tous les noms de signaux avec le numéro.

$ piège -l

La sortie de la commande ci-dessus affichera la liste des 64 signaux avec des nombres.

Définir la commande trap pour ERR et EXIT

La première commande suivante définira une commande 'trap' qui s'exécutera lorsqu'une erreur de shell se produit ou que le shell se termine. Cette commande 'trap' supprimera température.SMS fichier à partir de l'emplacement actuel. La commande 'ls' est utilisée pour vérifier le température.SMS le fichier existe ou non à l'emplacement actuel. dernièrement sortir La commande est utilisée pour fermer le terminal et exécuter la commande 'trap' définie avant.

$ trap 'rm temp.txt' erreur sortie
$ ls
$ sortie

La sortie suivante apparaîtra après avoir exécuté les commandes ci-dessus.

Maintenant, si l'utilisateur ouvre à nouveau le terminal après la sortie et exécute la commande 'ls' alors température.SMS le fichier n'existera pas.

Définir la commande 'trap' avec le numéro de signal de SIGUP, SIGQUIT et SIGKILL

Le numéro de signal de SIGUP, SIGQUIT et SIGKILL sont 1, 3 et 9. La première commande suivante définira un piège pour ces trois signaux. Lorsque l'un de ces signaux se produira, le message "La commande Trap est exécutée” imprimera.  Exécutez la commande suivante depuis le terminal.

$ trap 'echo Trap commande exécutée' 1 3 9

Lorsque l'utilisateur appuie sur Ctrl+C pour générer le signal assigné par la commande 'trap' puis le 'écho' la commande de trap s'exécutera et la sortie suivante apparaîtra.

Définir la commande 'trap' pour SIGTERM dans un script

SIGTERM signal est utilisé pour terminer le processus immédiatement en libérant ses ressources. Créez un fichier bash nommé 'piège.sh' avec le code suivant. Une boucle for infinie est déclarée dans le script qui imprimera un texte en continu jusqu'à ce que SIGTERM le signal se produit. L'utilisateur doit appuyer sur Ctrl+Z générer SIGTERM signal.

piège.sh

#!/bin/bash
 
# Définir un piège pour les signaux SIGINT et SIGTERM
trap "echo Le programme est terminé." SIGTERM SIGINT
 
#Afficher le message pour générer SIGTERM
echo "Appuyez sur Ctrl+Z pour arrêter le processus"
 
#Initialiser la variable de compteur, je
i=1
 
#declare une boucle for infinie
pour(;;)
fais
#Imprimer le message avec le compteur i
echo "exécution de la boucle $i fois"
#Incrémenter le compteur de un
((i++))
Fini

Exécutez le script en exécutant la commande suivante et appuyez sur Ctrl+Z pour générer SIGTERM signal. La sortie similaire suivante apparaîtra.

$ bash trapscript.sh

Définir une commande 'trap' pour exécuter une fonction basée sur un signal particulier

Vous pouvez associer une commande 'trap' à n'importe quelle fonction définie par l'utilisateur. Créer un bash nommé piège.sh et ajoutez le script suivant. Ici, une fonction personnalisée nommée fonction() est déclaré pour imprimer un message simple, "Tâche terminée". Une boucle for-in est définie pour lire et imprimer la liste de tous les fichiers et dossiers du répertoire de travail actuel. 'prendre au piège' la commande définie au début de la liste appellera la fonction, fonction() quand le programme se termine.

piège.sh

#!/bin/bash
# Appeler la fonction func en quittant
trap func sortie
# Déclarer la fonction
fonction fonction()
 
echo "Tâche terminée"

# Lire les fichiers et dossiers de la liste de répertoires actuelle à l'aide de la boucle for
pour moi dans *
fais
echo "$i"
Fini

Exécutez le script depuis le terminal.

Exécutez le script.

$ bash trapfunc.sh

La sortie suivante montre que, "Tâche terminée” le texte est imprimé après l'impression de tous les fichiers et dossiers du répertoire courant.

Conclusion

Ce tutoriel montre comment la commande 'trap' peut être utilisée sous Linux pour effectuer n'importe quelle tâche automatisée basée sur le signal généré. Il aide les utilisateurs à tracer différents types d'erreurs et à prendre les mesures appropriées qui peuvent être attribuées auparavant à l'aide de cette commande. De nombreux programmes ou scripts allouent des ressources particulières lors de l'exécution dans le système. Si un programme ou un script en cours d'exécution se termine ou se termine de manière anormale, les ressources utilisées par ce programme sont bloquées. La commande 'trap' peut être utilisée pour résoudre ce problème. La tâche de nettoyage des ressources peut être effectuée facilement en utilisant cette commande. Espérons que le lecteur se fasse une idée précise des usages de cette commande après avoir lu ce tutoriel.

Le curseur saute ou se déplace de manière aléatoire lors de la saisie dans Windows 10
Si vous constatez que le curseur de votre souris saute ou se déplace tout seul, automatiquement, au hasard lors de la saisie sur un ordinateur portabl...
Comment inverser le sens de défilement de la souris et des pavés tactiles dans Windows 10
Souris et Pavé tactiles rendent non seulement l'informatique facile, mais plus efficace et moins chronophage. Nous ne pouvons pas imaginer une vie san...
Comment changer la taille, la couleur et le schéma du pointeur et du curseur de la souris sous Windows 10
Le pointeur et le curseur de la souris dans Windows 10 sont des aspects très importants du système d'exploitation. Cela peut également être dit pour d...