![Декодирование флагов для команды Kill](https://rvso.com/image/31662/%D0%94%D0%B5%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D1%84%D0%BB%D0%B0%D0%B3%D0%BE%D0%B2%20%D0%B4%D0%BB%D1%8F%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B%20Kill.png)
Я видел эту команду в книге по написанию сценариев оболочки Linux.
$ kill -HUP 1234 >killout.txt 2>killerr.txt
Я знаю, что делает команда, но не могу понять флаги.-ХУП
решение1
Под Linux попробуйте man 7 signal
.
kill -HUP 1234
означает «отправить сигнал SIGHUP (1) для обработки 1234», поэтому он эквивалентен kill -1 1234
. Сигнал по умолчанию, который отправляет kill, — SIGTERM (15), поэтому kill 1234
он эквивалентен kill -TERM 1234
или kill -15 1234
.
решение2
-HUP
не три флага H
, U
, P
как в обычном однобуквенном синтаксисе опций. По историческим причинам команда kill
принимает необязательное имя сигнала или номер сигнала, которому предшествует тире ( -
).
kill -1 1234
kill -HUP 1234
(В отличие от kill 1 1234
, который отправил бы сигнал по умолчанию (SIGTERM) процессам 1 и 1234.)
На вашей странице руководства, вероятно, указано что-то вроде этого:
kill [ -signal | -s signal ] pid ...
Это -signal
означает, что вы можете использовать тире, за которым следует обозначение сигнала (которое может быть именем или номером). В качестве альтернативы вы можете использовать опцию, -s
за которой следует имя сигнала; это два разных синтаксиса с одинаковым значением.
kill -l
перечисляет доступные названия сигналов и соответствующие им номера.
Большинствосигналыимеют предопределенное значение, основанное накто их посылает когдаи как процессы должны и могут реагировать на них.