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