Відмінності між версіями «Робота з сигналами»

Матеріал з Wiki TNEU
Перейти до: навігація, пошук
(Створена сторінка: Можливості bash дозволяють перехоплювати й обробляти сигнали за допомогою сценарію. Під с...)
 
м (Захист на Робота з сигналами встановлено (‎[edit=sysop] (безстроково) ‎[move=sysop] (безстроково)))
 
(Одна проміжна версія одного користувача не показана)
Рядок 1: Рядок 1:
 
Можливості bash дозволяють перехоплювати й обробляти сигнали за допомогою сценарію. Під сигналами розуміється засіб, що дозволяє повідомляти процесам про різні події в операційній системі.
 
Можливості bash дозволяють перехоплювати й обробляти сигнали за допомогою сценарію. Під сигналами розуміється засіб, що дозволяє повідомляти процесам про різні події в операційній системі.
Список всіх сигналів можна отримати, ввівши команду:
 
$ Kill-l
 
  
Перехоплювати сигнали дозволяє команда trap. Загальний синтаксис команди:
+
Список всіх сигналів можна отримати, ввівши команду:
trap [-lp] [команди сигнал сигнал ...]
+
$ Kill-l
  
  Ключ-l виводить список імен і номерів сигналів, а ключ-p виводить список команд, пов'язаних з кожним сигналом. Сигнали слід вказувати за іменами або за номерами.
+
Перехоплювати сигнали дозволяє команда trap. Синтаксис команди:
Система завжди якимось чином реагує на отримання сигналу, тобто виконує команду. Якщо ж замість команди вказати порожній рядок, то сигнал просто буде проігнорований.
+
  trap [-lp] [команди сигнал сигнал ...]
Наведу невеликий список найбільш часто зустрічаються сигналів:
+
 
 +
Ключ '''-l''' виводить список імен і номерів сигналів, а ключ '''-p''' виводить список команд, пов'язаних з кожним сигналом. Сигнали слід вказувати за іменами або за номерами.
 +
Система завжди якимось чином реагує на отримання сигналу, тобто виконує команду. Якщо ж замість команди вказати порожній рядок, то сигнал просто буде проігнорований.
 +
 
 +
Список найважливіших сигналів:
 
  HUP - hangup, відбій;
 
  HUP - hangup, відбій;
 
  INT - interrupt, переривання;
 
  INT - interrupt, переривання;
Рядок 17: Рядок 19:
 
  TERM - termination, завершити процес;
 
  TERM - termination, завершити процес;
 
  CHILD - завершився дочірній процес.
 
  CHILD - завершився дочірній процес.
Приклад:
 
trap''INT # ігнорувати сигнал INT
 
 
Для того, щоб протоколювати процес роботи свого скрипта, потрібно використовувати команду tee. Команда копіює дані зі свого стандартного потоку введення і роздвоює їх на стандартний потік вводу і в зазначений файл логу. Для пояснення наведу приклад:
 
$ Cat listfile * | sort | tee check.file | uniq> result.file
 
 
Тут, у файл check.file будуть записані дані з усіх «listfile *», в відсортованому вигляді до того, як повторювані рядки будуть видалені командою uniq.
 
Також існує інший спосіб протоколювання. Він полягає у використанні команди script, яка копіює в файл весь сеанс роботи в текстовій консолі: введення користувача і виведення команд. Якщо проводити запуск команди script вручну, то зупинити протоколювання можна командою exit.
 
Наведу приклад:
 
LOGFILE = log
 
if ["$ LOGGING" == "true"]; then
 
script myscript $ LOGFILE; else
 
myscript;
 
fi
 
  
Для того, щоб викликати сценарій всередині свого сценарію, потрібно використовувати команду exec:
+
Приклад:
exec script $ 0 $ LOGFILE
+
trap''INT # ігнорувати сигнал INT

Поточна версія на 23:24, 20 вересня 2012

Можливості bash дозволяють перехоплювати й обробляти сигнали за допомогою сценарію. Під сигналами розуміється засіб, що дозволяє повідомляти процесам про різні події в операційній системі.

Список всіх сигналів можна отримати, ввівши команду:

$ Kill-l

Перехоплювати сигнали дозволяє команда trap. Синтаксис команди:

trap [-lp] [команди сигнал сигнал ...]

Ключ -l виводить список імен і номерів сигналів, а ключ -p виводить список команд, пов'язаних з кожним сигналом. Сигнали слід вказувати за іменами або за номерами. Система завжди якимось чином реагує на отримання сигналу, тобто виконує команду. Якщо ж замість команди вказати порожній рядок, то сигнал просто буде проігнорований.

Список найважливіших сигналів:

HUP - hangup, відбій;
INT - interrupt, переривання;
QUIT - вихід;
ILL - illegal instruction, програмна помилка;
FPE - floating point exception, обчислювальна помилка;
KILL - вбити процес;
TERM - termination, завершити процес;
CHILD - завершився дочірній процес.

Приклад:

trapINT # ігнорувати сигнал INT
Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти