Commande Bash Trap

Commande Bash Trap
Une commande bash intégrée utilisée pour exécuter une commande lorsque le shell reçoit un signal est appelé «piège». 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 (interruption du signal). Lorsque l'utilisateur appuie sur Ctrl + C pour interrompre tout processus du terminal, ce signal est envoyé pour informer 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] signal_spec…]

ou

Trap [Action] [Signal]
Clé Description
-l Il est utilisé pour afficher la liste de tous les noms de signal avec un numéro correspondant.
-p Il est utilisé pour afficher la commande Signal ou Trap pour Signal_Spec.
arg Il est utilisé pour exécuter une commande lorsque le shell reçoit le ou les signaux.
signal_spec Il contient le nom du signal ou le numéro de signal.
  • Commande de piège sans valeur arg ou avec la valeur '-' arg réinitialisera le signal spécifié à sa valeur d'origine.
  • La commande de piège avec la valeur «null» ignorera le signal spécifié envoyé par le shell ou la commande.
  • Un signal_spec avec la valeur, sortie (0) exécutera arg après être sorti du shell.
  • Un signal_spec avec la valeur déboguer exécutera arg avant chaque commande unique.
  • Un signal_spec avec la valeur retour Exécutera ARG à chaque fois lorsqu'une fonction de shell s'exécute ou un script exécuté par «.".
  • Un signal_spec avec la valeur se tromper Exécutera ARG à chaque fois sur l'échec de la commande.

Commande de piège sans aucune option et arg

Exécutez la commande suivante à partir du terminal pour afficher la liste de toutes les commandes associées à chaque condition. Si une commande «piège» n'est pas définie avant, la commande suivante n'a afficher aucune information.

$ trap

Commande de piège avec l'option -L

Exécutez la commande suivante à partir du terminal pour afficher la liste de tous les noms de signaux avec numéro.

$ trap -l

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

Définissez la commande TRAP pour ERR et QUIT

La première commande suivante définira une commande «Trap» qui s'exécutera en cas d'erreur de shell ou quittera le shell. Cette commande «piège» sera supprimée temp.SMS fichier à partir de l'emplacement actuel. La commande 'ls' est utilisée pour vérifier la temp.SMS Le fichier existe ou non à l'emplacement actuel. Dernièrement sortie La commande est utilisée pour fermer le terminal et exécuter la commande 'Trap' qui est définie avant.

$ Trap 'rm temp.TXT 'ERR QUIT
$ ls
$ exit

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.SMS Le fichier n'existera pas.

Définissez la commande 'piège' avec le nombre de signaux 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 de piège est exécutée»Imprimera. Exécutez la commande suivante à partir du terminal.

$ TRAP 'Echo Trap Command exécuté' 1 3 9

Lorsque l'utilisateur appuyera Ctrl + c Pour générer la commande Signal Assignez par «trap» puis le 'écho' La commande de la commande TRAP s'exécutera et la sortie suivante apparaîtra.

Définissez la commande 'Trap' pour Sigterm dans un script

Sigterm Le signal est utilisé pour terminer le processus immédiatement en libérant ses ressources. Créer un fichier bash nommé 'trapscript.shot'Avec le code suivant. Un infinie pour la boucle est déclaré dans le script qui imprimera un texte en continu jusqu'à Sigterm Le signal se produit. L'utilisateur doit appuyer Ctrl + z générer Sigterm signal.

trapscript.shot

#!/ bac / bash
# Définissez un piège pour les signaux Sigint et Sigterm
Pièger "Echo Le programme est terminé."Sigterm Sigint
#Display Message pour générer SIGTERM
Echo "Appuyez sur Ctrl + Z Stop the Process"
#Initialiser la variable de comptoir, je
i = 1
#Declare Infinite pour Loop
pour(;;)
faire
Message #print avec le compteur I
Echo «Exécuter la boucle pour $ i Times»
#Increment le compteur par un
((i ++))
fait

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.shot

Définissez une commande «Trap» pour exécuter une fonction en fonction d'un signal particulier

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

trapfunc.shot

#!/ bac / bash
# Appelez la fonction FUNC à la sortie
Pièger la sortie du func
# Déclarer la fonction
fonction func ()
écho "tâche terminée"

# Lisez les fichiers et dossiers de la liste de répertoires actuelle en utilisant pour Loop
pour je dans *
faire
Echo "$ i"
fait

Exécutez le script à partir du terminal.

Exécutez le script.

$ bash trapfunc.shot

La sortie suivante montre que, "Tâche terminée»Le texte est imprimé après imprimer tous les fichiers et dossiers du répertoire actuel.

Conclusion

Ce tutoriel montre comment la commande «Trap» peut être utilisée dans Linux pour effectuer une tâche automatisée basée sur le signal généré. Il aide les utilisateurs à tracer différents types d'erreurs et à prendre des mesures appropriées qui peuvent être attribuées auparavant en utilisant cette commande. De nombreux programmes ou scripts répartissent des ressources particulières lors de l'exécution dans le système. Si un programme en cours d'exécution ou de scénario quitte ou se termine anormalement, 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. Hope, le lecteur aura une idée claire des utilisations de cette commande après avoir lu ce tutoriel.