Команди Linux

Команда Bash trap

Команда Bash trap
Вбудована команда bash, яка використовується для виконання команди, коли оболонка отримує будь-який сигнал, називається "пасткою". Коли відбувається якась подія, то bash надсилає повідомлення будь-яким сигналом. Багато сигналів доступні в bash. Найпоширенішим сигналом bash є SIGINT (переривання сигналу). Коли користувач натискає CTRL + C, щоб перервати будь-який процес з терміналу, цей сигнал надсилається для сповіщення системи.  Як ви можете використовувати команду trap для обробки різних типів сигналів, пояснюється в цьому посібнику.

Синтаксис:

trap [-lp] [[arg] signal_spec…]

або

пастка [дія] [сигнал]
Ключ Опис
Він використовується для відображення списку всіх назв сигналів з відповідним номером.
-стор Він використовується для відображення команди сигналу або команди пастки для signal_spec.
аргумент Використовується для виконання команди, коли оболонка приймає сигнал (и).
signal_spec Він містить назву сигналу або номер сигналу.

Команда 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'. Завдання очищення ресурсу можна легко зробити за допомогою цієї команди. Сподіваюсь, читач отримає чітке уявлення про використання цієї команди після прочитання цього підручника.

Топ 5 карт для захоплення ігор
Ми всі бачили і любили потокові ігри на YouTube. PewDiePie, Jakesepticye та Markiplier - лише деякі з найкращих геймерів, які заробили мільйони, заван...
Як розробити гру на Linux
Десять років тому не так багато користувачів Linux передбачали, що їх улюблена операційна система колись стане популярною ігровою платформою для комер...
Open Source Ports of Commercial Game Engines
Free, open source and cross-platform game engine recreations can be used to play old as well as some of the fairly recent game titles. This article wi...