Синтаксис:
trap [-lp] [[arg] signal_spec…]или
капан [действие] [сигнал]Ключ | Описание |
-л | Използва се за показване на списъка с всички имена на сигнали със съответния номер. |
-стр | Използва се за показване на сигнална команда или команда за улавяне за signal_spec. |
аргумент | Използва се за изпълнение на команда, когато черупката получи сигнал (и). |
сигнал_спец | Той съдържа име на сигнал или номер на сигнал. |
- Командата за улавяне без стойност на аргумента или със стойността на аргумента '-' ще нулира посочения сигнал до първоначалната му стойност.
- Командата за улавяне със стойност „null“ arg ще игнорира посочения сигнал, изпратен от обвивката или командата.
- Спецификация на сигнала със стойността, изход (0) ще изпълни arg след излизане от черупката.
- Спецификация на сигнала със стойността отстраняване на грешки ще изпълни arg преди всяка отделна команда.
- Спецификация на сигнала със стойността връщане ще изпълнява arg всеки път, когато се изпълнява функция на черупката или скрипт, изпълняван от „.”.
- Спецификация на сигнала със стойността грешка ще изпълнява arg всеки път при неуспех на командата.
Trap команда без опция и аргумент
Изпълнете следната команда от терминала, за да покажете списъка с всички команди, свързани с всяко условие. Ако някоя команда "trap" не е зададена преди това, следващата команда няма да покаже никаква информация.
$ капанКоманда за улавяне с опция -l
Изпълнете следната команда от терминала, за да покажете списъка с всички имена на сигнали с номер.
$ капан -lИзходът на горната команда ще покаже списъка с 64 сигнала с цифри.
Задайте команда за улавяне за ERR и EXIT
Следващата първа команда ще зададе команда "trap", която ще се изпълни, когато възникне грешка на черупката или излезе от нея. Тази команда "trap" ще премахне темп.текст файл от текущото местоположение. Командата 'ls' се използва за проверка на темп.текст файл съществува или не е в текущото местоположение. И накрая изход команда се използва за затваряне на терминала и изпълнение на командата 'trap', която е зададена преди.
$ капан 'rm темп.txt 'грешка изход$ ls
$ изход
След изпълнението на горните команди ще се появи следният изход.
Сега, ако потребителят отвори терминала отново след излизане и изпълни командата 'ls' след това темп.текст файлът няма да съществува.
Задайте команда "trap" с номер на сигнала SIGUP, SIGQUIT и SIGKILL
Номерът на сигнала от ПОДПИСАНЕ, ПРЕПРАЩАНЕ и SIGKILL са 1, 3 и 9. Следващата първа команда ще зададе капан за тези три сигнала. Когато някой от тези сигнали се появи, съобщението „Командата за улавяне се изпълнява”Ще отпечата. Изпълнете следната команда от терминала.
$ trap 'echo Изпълнена команда за улавяне' 1 3 9Когато потребителят натисне Ctrl + C за генериране на присвояване на сигнал чрез команда "trap" след това "ехо" command of trap команда ще се изпълни и ще се появи следният изход.
Задайте команда "trap" за SIGTERM в скрипт
SIGTERM сигнал се използва за незабавно прекратяване на процеса чрез освобождаване на неговите ресурси. Създайте bash файл с име 'трапскрипт.ш'със следния код. В скрипта е деклариран безкраен цикъл for, който непрекъснато ще отпечатва текст до SIGTERM възниква сигнал. Потребителят трябва да натисне Ctrl + Z да генерира SIGTERM сигнал.
трапскрипт.ш
#!/ bin / bash# Задайте капан за сигнали SIGINT и SIGTERM
trap "echo Програмата се прекратява."СИГТЕРМ ЗНАЧ
# Показване на съобщение за генериране на SIGTERM
echo "Натиснете Ctrl + Z, за да спрете процеса"
# Инициализиране на броячна променлива, т.е
i = 1
#declare безкраен за цикъл
за(;;)
направете
# Отпечатайте съобщение с брояч i
ехо „стартиране на цикъла за $ 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' може да се използва за решаване на този проблем. Задачата за почистване на ресурса може да се направи лесно с помощта на тази команда. Надявам се, четецът ще получи ясна представа за използването на тази команда, след като прочете този урок.