Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒FreeBSD and Nix⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐SQL\T-SQL
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

Linux механизм сигналов


 

Linux механизм сигналов


Рассмотрим:
Взаимодействие процессов между собой
Взаимодействие человека с процессом


1.1 Неименованные каналы(pipe)

Рассмотрим команду-конвейр:
$ cat /etc/fstab | grep ext4

Здесь cat взаимодействует с grep с помощью неименованого канала(pipe)


1.2 Именованные каналы

Создаются с помощью mkfifo:
$ mkfifo named_pipe

В результате в директории появится файл "named_pipe"

Передадим данные в канал:
$ echo "Hello World!" > named_pipe

Команда не завершает работу, открываем второй сеанс и выполним:
$ cat named_pipe
Hello World!

Можно сделать действия наоборот, сначала cat, потом echo


1.3 Сигналы - утилита kill

Синтакисис:
$ kill [-s <сигнал>] <PID>

Процесс с помощью ядра может отдать другому процессу по PID код сигнала

Ядро передаст сигнал процессу получателю и отследит его обработку

Сигналы могут быть кодами(числами) либо мнемоническими значениями

Перечень сигналов можно вывести командой kill -l:
$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

Мнемонические значения типа - SIGHUP, SIGINT... начинаются с префикса - SIG

Имена в таком формате используются в языке программирования - С

В bash применяются числа и мнемонические имена приставки SIG - HUP, INT...

Особенности самых часто используемых сигналов:
1) SIGHUP - понимается процессами как: перечитать свои конфигурационные файлы
2) SIGINT  - немедленно завершает процесс, можно блокировать и перехватывать
3) SIGQUIT  - идентичен SIGTERM, позволяет сохранять дамп памяти
9) SIGKILL - не блокируется, не перехватывается, немедленно завершает процесс
15) SIGTERM - завершает корректно процесс, блокируется и перехватывается

Пример передачи сигнала - 9) SIGKILL:
$ sleep 60 &
[1] 18094

$ kill -KILL 18094

$ ps ax | grep sleep
[1]+  Killed                  sleep 60


1.4 Сигналы - утилита killall

Отличие от kill - killall может посылать сигналы:
Всем процессам с идентичными именами
Всем процессам определенного пользователя

Если имя сигнала не указано, передается SIGTERM

Сигналы могут быть указаны:
По имени (-HUP или -SIGHUP) или по
Числом (например, -1) или опцией -s

Пример передачи сигнала:
$ sleep 60 &
[1] 20729

$ sleep 60 &
[2] 20730

$ sleep 60 &
[3] 20731

Удалить все процессы с определенным именем:
$ killall sleep
[1]   Terminated              sleep 60
[2]-  Terminated              sleep 60
[3]+  Terminated              sleep 60

Удалить процессы определенного пользователя:
$ killall -u user_name

Посыл определенного сигнала:
$ killall -s 15 sleep

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru