Sintaxis:
trap [-lp] [[arg] signal_spec…]o
trampa [acción] [señal]Clave | Descripción |
-l | Se utiliza para mostrar la lista de todos los nombres de señales con el número correspondiente. |
-pag | Se utiliza para mostrar el comando de señal o el comando de trampa para signal_spec. |
arg | Se usa para ejecutar un comando cuando el shell recibe la (s) señal (es). |
signal_spec | Contiene el nombre de la señal o el número de la señal. |
- El comando Trap sin valor de arg o con valor de arg '-' restablecerá la señal especificada a su valor original.
- El comando Trap con valor arg 'nulo' ignorará la señal especificada enviada por el shell o comando.
- Un signal_spec con el valor, salir (0) ejecutará arg después de salir del shell.
- Un signal_spec con el valor depurar ejecutará arg antes de cada comando.
- Un signal_spec con el valor regreso ejecutará arg cada vez que se ejecute una función de shell o un script ejecutado por ".".
- Un signal_spec con el valor errar ejecutará arg cada vez que falle el comando.
Comando de captura sin ninguna opción y arg
Ejecute el siguiente comando desde el terminal para mostrar la lista de todos los comandos asociados con cada condición. Si no se establece ningún comando de 'trampa' antes, el siguiente comando no mostrará ninguna información.
$ trampaComando de captura con la opción -l
Ejecute el siguiente comando desde el terminal para mostrar la lista de todos los nombres de señales con número.
$ trampa -lLa salida del comando anterior mostrará la lista de 64 señales con números.
Establecer comando de captura para ERR y EXIT
El siguiente primer comando establecerá un comando 'trap' que se ejecutará cuando se produzca un error de shell o se cierre el shell. Este comando de 'trampa' eliminará temperatura.TXT archivo de la ubicación actual. El comando 'ls' se usa para verificar temperatura.TXT el archivo existe o no en la ubicación actual. Finalmente Salida El comando se usa para cerrar la terminal y ejecutar el comando 'trap' que se establece antes.
$ trap 'rm temp.txt 'err salir$ ls
$ salida
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
Ahora, si el usuario abre el terminal nuevamente después de salir y ejecuta el comando 'ls', entonces temperatura.TXT el archivo no existirá.
Configure el comando 'trap' con el número de señal de SIGUP, SIGQUIT y SIGKILL
El número de señal de SIGUP, SIGQUIT y SIGKILL son 1, 3 y 9. El siguiente primer comando establecerá una trampa para estas tres señales. Cuando se produzca alguna de estas señales, aparecerá el mensaje "Se ejecuta el comando Trap"Imprimirá. Ejecute el siguiente comando desde la terminal.
$ trap 'comando echo Trap ejecutado' 1 3 9Cuando el usuario presione Ctrl + C para generar la señal asignada por el comando 'trap', entonces el 'eco' El comando del comando trap se ejecutará y aparecerá la siguiente salida.
Establecer el comando 'trap' para SIGTERM en un script
SIGTERM La señal se utiliza para terminar el proceso inmediatamente liberando sus recursos. Crea un archivo bash llamado 'trapscript.sh'con el siguiente código. Se declara un bucle for infinito en el script que imprimirá un texto continuamente hasta que SIGTERM se produce la señal. El usuario tiene que presionar Ctrl + Z para generar SIGTERM señal.
trapscript.sh
#!/ bin / bash# Establecer una trampa para señales SIGINT y SIGTERM
trap "echo El programa está terminado."SIGTERM SIGINT
#Mostrar mensaje para generar SIGTERM
echo "Presione Ctrl + Z para detener el proceso"
#Inicializar variable de contador, i
i = 1
#declare infinite for loop
por(;;)
hacer
#Imprimir mensaje con contador i
echo "ejecutar el bucle por $ i veces"
# Incrementar el contador en uno
((i ++))
hecho
Ejecute el script ejecutando el siguiente comando y presione Ctrl + Z para generar SIGTERM señal. Aparecerá la siguiente salida similar.
$ bash trapscript.sh
Establecer un comando de 'trampa' para ejecutar una función basada en una señal particular
Puede asociar un comando 'trap' con cualquier función definida por el usuario. Crea una fiesta llamada trapfunc.sh y agregue el siguiente script. Aquí, una función personalizada llamada func () se declara para imprimir un mensaje simple, "Tarea terminada". Se define un bucle for-in para leer e imprimir la lista de todos los archivos y carpetas del directorio de trabajo actual. 'trampa' El comando que se define al principio de la lista llamará a la función, func () cuando el programa termina.
trapfunc.sh
#!/ bin / bash# Llamar a la función func al salir
trap func exit
# Declara la función
function func ()
echo "Tarea completada"
# Leer los archivos y carpetas de la lista de directorios actual usando for loop
porque yo en *
hacer
echo "$ i"
hecho
Ejecute el script desde la terminal.
Ejecuta el script.
$ bash trapfunc.shEl siguiente resultado muestra que, "Tarea terminada”Se imprime el texto después de imprimir todos los archivos y carpetas del directorio actual.
Conclusión
Este tutorial muestra cómo se puede usar el comando 'trap' en Linux para realizar cualquier tarea automatizada basada en la señal generada. Ayuda a los usuarios a rastrear diferentes tipos de errores y tomar las medidas adecuadas que se pueden asignar antes mediante este comando. Muchos programas o scripts asignan algunos recursos particulares cuando se ejecutan en el sistema. Si algún programa o script en ejecución sale o termina de forma anormal, los recursos utilizados por ese programa se bloquean. El comando 'trap' se puede usar para resolver este problema. La tarea de limpieza de recursos se puede realizar fácilmente usando este comando. Espero que el lector tenga una idea clara de los usos de este comando después de leer este tutorial.