Синтаксис:
ловушка [-lp] [[аргумент] спецификация_сигнала…]или же
ловушка [действие] [сигнал]Ключ | Описание |
-л | Используется для отображения списка всех имен сигналов с соответствующим номером. |
-п | Он используется для отображения команды сигнала или команды прерывания для signal_spec. |
аргумент | Он используется для выполнения команды, когда оболочка получает сигнал (ы). |
signal_spec | Он содержит название сигнала или номер сигнала. |
- Команда Trap без значения arg или со значением arg '-' сбросит указанный сигнал к его исходному значению.
- Команда Trap со значением аргумента 'null' игнорирует указанный сигнал, отправленный оболочкой или командой.
- Signal_spec со значением, выход (0) выполнит arg после выхода из оболочки.
- Signal_spec со значением отлаживать будет выполнять arg перед каждой отдельной командой.
- Signal_spec со значением возвращаться будет выполнять arg каждый раз, когда выполняется функция оболочки или сценарий, запускаемый «.”.
- Signal_spec со значением ошибаться будет выполнять arg каждый раз при сбое команды.
Команда Trap без каких-либо параметров и аргументов
Выполните следующую команду из терминала, чтобы отобразить список всех команд, связанных с каждым условием. Если какая-либо команда 'trap' не была установлена раньше, следующая команда не будет отображать никакой информации.
$ ловушкаКоманда ловушки с параметром -l
Выполните следующую команду с терминала, чтобы отобразить список всех имен сигналов с номером.
$ trap -lРезультат выполнения вышеуказанной команды покажет список из 64 сигналов с номерами.
Установить команду прерывания для ERR и EXIT
Следующая первая команда установит команду 'trap', которая будет выполняться при возникновении любой ошибки оболочки или выходе из оболочки. Эта команда "ловушка" удалит темп.текст файл из текущего местоположения. Команда 'ls' используется для проверки темп.текст файл существует или нет в текущем месте. Наконец выход используется для закрытия терминала и выполнения команды 'trap', установленной перед.
$ trap 'rm temp.txt 'ошибка выхода$ ls
$ exit
Следующий вывод появится после выполнения вышеуказанных команд.
Теперь, если пользователь снова откроет терминал после выхода и выполнит команду ls, тогда темп.текст файл не будет существовать.
Установите команду 'trap' с номером сигнала SIGUP, SIGQUIT и SIGKILL
Количество сигналов SIGUP, SIGQUIT а также СИГКИЛЛ 1, 3 и 9. Следующая первая команда установит ловушку для этих трех сигналов. При появлении любого из этих сигналов появляется сообщение «Команда ловушки выполнена»Напечатает. Выполните следующую команду из терминала.
$ trap 'echo Команда Trap выполнена' 1 3 9Когда пользователь нажмет Ctrl + C чтобы сгенерировать сигнал, назначенный командой 'trap', затем 'эхо' команда команды trap будет выполнена, и появится следующий вывод.
Установите команду trap для SIGTERM в скрипте
SIGTERM сигнал используется для немедленного завершения процесса путем освобождения его ресурсов. Создайте файл bash с именем 'trapscript.ш'со следующим кодом. В скрипте объявлен бесконечный цикл for, который будет печатать текст непрерывно до тех пор, пока SIGTERM сигнал появляется. Пользователь должен нажать Ctrl + Z чтобы генерировать SIGTERM сигнал.
trapscript.ш
#!/ bin / bash# Установить ловушку для сигналов SIGINT и SIGTERM
trap "echo Программа завершена."SIGTERM SIGINT
# Показать сообщение для генерации SIGTERM
echo "Нажмите Ctrl + Z, чтобы остановить процесс"
# Инициализировать переменную счетчика, i
я = 1
#declare infinite for loop
для(;;)
делать
# Распечатать сообщение со счетчиком i
echo «запуск цикла $ i раз»
# Увеличиваем счетчик на единицу
((i ++))
Выполнено
Запустите сценарий, выполнив следующую команду и нажмите Ctrl + Z, чтобы сгенерировать SIGTERM сигнал. Появится следующий аналогичный результат.
$ bash trapscript.ш
Установите команду 'trap' для запуска функции на основе определенного сигнала
Вы можете связать команду "ловушка" с любой пользовательской функцией. Создайте баш с именем trapfunc.ш и добавьте следующий скрипт. Здесь пользовательская функция с именем func () объявлен для печати простого сообщения, «Задача выполнена». Цикл for-in предназначен для чтения и печати списка всех файлов и папок текущего рабочего каталога. 'ловушка' команда, которая определена в начале списка, вызовет функцию, func () когда программа завершается.
trapfunc.ш
#!/ bin / bash# Вызов функции func при выходе
функция ловушки выход
# Объявить функцию
function func ()
echo «Задача выполнена»
# Прочитать файлы и папки из текущего списка каталогов с помощью цикла for
для я в *
делать
эхо "$ i"
Выполнено
Запускаем скрипт из терминала.
Запускаем скрипт.
$ bash trapfunc.шСледующий вывод показывает, что, «Задача выполнена»Текст печатается после печати всех файлов и папок текущего каталога.
Заключение
В этом руководстве показано, как команду trap можно использовать в Linux для выполнения любой автоматизированной задачи на основе сгенерированного сигнала. Это помогает пользователям отслеживать различные типы ошибок и принимать правильные меры, которые могут быть назначены ранее с помощью этой команды. Многие программы или скрипты выделяют определенные ресурсы при работе в системе. Если какая-либо запущенная программа или сценарий завершает работу или завершается ненормально, ресурсы, используемые этой программой, блокируются. Для решения этой проблемы можно использовать команду trap. Задача очистки ресурсов может быть легко выполнена с помощью этой команды. Надеюсь, читатель получит четкое представление об использовании этой команды после прочтения этого руководства.