Синтаксис:
trap [-lp] [[arg] signal_spec…]або
пастка [дія] [сигнал]Ключ | Опис |
-л | Він використовується для відображення списку всіх назв сигналів з відповідним номером. |
-стор | Він використовується для відображення команди сигналу або команди пастки для signal_spec. |
аргумент | Використовується для виконання команди, коли оболонка приймає сигнал (и). |
signal_spec | Він містить назву сигналу або номер сигналу. |
- Команда trap без значення аргументу або зі значенням аргументу '-' скине вказаний сигнал до початкового значення.
- Команда trap зі значенням null arg буде ігнорувати вказаний сигнал, що надсилається оболонкою або командою.
- Специфікація_сигналу зі значенням, вихід (0) буде виконувати arg після виходу з оболонки.
- Специфікація_сигналу зі значенням налагоджувати буде виконувати arg перед кожною окремою командою.
- Специфікація_сигналу зі значенням повернення буде виконувати arg кожного разу, коли виконується функція оболонки або сценарій, який запускається “.".
- Специфікація_сигналу зі значенням помилка буде виконувати arg щоразу при відмові команди.
Команда trap без будь-якої опції та аргументу
Виконайте наступну команду з терміналу, щоб відобразити список усіх команд, пов'язаних з кожною умовою. Якщо будь-яка команда "trap" не встановлена раніше, тоді наступна команда не відображатиме жодної інформації.
$ пасткаКоманда перехоплення з опцією -l
Виконайте наступну команду з терміналу, щоб відобразити список усіх імен сигналів із номером.
$ пастка -lНа виході вищевказаної команди буде показано список із 64 сигналів із цифрами.
Встановіть команду trap для ERR та EXIT
Наступна перша команда встановить команду 'trap', яка буде виконуватися при виникненні будь-якої помилки оболонки або виходу з оболонки. Ця команда "trap" видалить темп.txt файл із поточного місцезнаходження. Команда 'ls' використовується для перевірки темп.txt файл існує чи не в поточному місці. Нарешті вихід команда використовується для закриття терміналу та виконання команди 'trap', встановленої раніше.
$ trap 'rm temp.txt 'помилковий вихід$ ls
$ вихід
Наступний результат з’явиться після запуску вищевказаних команд.
Тепер, якщо користувач знову відкриває термінал після виходу і виконує команду 'ls' темп.txt файл не буде існувати.
Встановіть команду 'trap' з номером сигналу SIGUP, SIGQUIT і SIGKILL
Номер сигналу СИГУП, СІГВІТ і SIGKILL складають 1, 3 і 9. Наступна перша команда встановить пастку для цих трьох сигналів. Коли виникне будь-який із цих сигналів, тоді з'явиться повідомлення “Команда Trap виконується”Надрукує. Виконайте наступну команду з терміналу.
$ trap 'echo Виконана команда Trap' 1 3 9Коли користувач натисне Ctrl + C згенерувати присвоєння сигналу командою "trap", а потім 'ехо' команда trap команда буде виконана, і з'явиться наступний результат.
Встановіть команду 'trap' для SIGTERM у сценарії
SIGTERM сигнал використовується для негайного завершення процесу шляхом звільнення його ресурсів. Створіть файл bash з назвою 'трапскрипт.ш'з наступним кодом. У сценарії оголошено нескінченний цикл for, який буде друкувати текст безперервно до SIGTERM сигнал. Користувач повинен натиснути Ctrl + Z генерувати SIGTERM сигналу.
трапскрипт.ш
#!/ bin / bash# Встановіть пастку для сигналів SIGINT та SIGTERM
trap "echo Програма припинена."SIGTERM ЗНАК
# Відображення повідомлення для створення SIGTERM
echo "Натисніть Ctrl + Z, щоб зупинити процес"
# Ініціалізувати змінну лічильника, i
i = 1
#declare нескінченний цикл
для (;;)
робити
# Друк повідомлення з лічильником i
echo "запуск циклу протягом $ i разів"
# Збільште лічильник на одиницю
((i ++))
зроблено
Запустіть сценарій, виконавши наступну команду, і натисніть Ctrl + Z, щоб створити SIGTERM сигналу. З'явиться такий аналогічний результат.
$ bash Trapscript.ш
Встановіть команду 'trap' для запуску функції на основі конкретного сигналу
Ви можете зв'язати команду 'trap' з будь-якою визначеною користувачем функцією. Створіть bash з іменем trapfunc.ш та додайте наступний сценарій. Тут призначена спеціальна функція func () оголошено для друку простого повідомлення, “Завдання виконано”. Вхідний цикл визначений для читання та друку списку всіх файлів і папок поточного робочого каталогу. "пастка" команда, визначена на початку списку, викличе функцію, func () коли програма закінчується.
trapfunc.ш
#!/ bin / bash# Виклик функції func при виході
trap func вихід -
# Оголосіть функцію
функція func ()
луна "Завдання виконано"
# Прочитайте файли та папки поточного списку каталогів, використовуючи цикл for
для я в *
робити
ехо "$ i"
зроблено
Запустіть скрипт з терміналу.
Запустіть сценарій.
$ bash trapfunc.шНаступний результат показує це, “Завдання виконано”Текст друкується після друку всіх файлів і папок поточного каталогу.
Висновок
Цей підручник показує, як команду "trap" можна використовувати в Linux для виконання будь-якого автоматизованого завдання на основі сформованого сигналу. Це допомагає користувачам відстежувати різні типи помилок та вживати належних дій, які можна призначити раніше за допомогою цієї команди. Багато програм або сценарії виділяють певні ресурси під час роботи в системі. Якщо будь-яка запущена програма або сценарій виходить із системи або припиняє роботу ненормально, тоді ресурси, використовувані цією програмою, блокуються. Для вирішення цієї проблеми можна використовувати команду 'trap'. Завдання очищення ресурсу можна легко зробити за допомогою цієї команди. Сподіваюсь, читач отримає чітке уявлення про використання цієї команди після прочитання цього підручника.