Сегодняшний выпуск посвящен команде kill(1), которая
позволяет послать сигнал процессам с заданными идентификаторами.
Перевод закончен 17 марта 2003 года по справочному руководству Solaris 8.
(Английская буква "эл".) Выдать все значения сигналов, поддерживаемые в данной реализации,
если операнды не указаны. Если указан операнд статус_выхода, соответствующий значению
специального параметра ? командного интерпретатора и вызову wait для процесса,
работа которого прекращена сигналом, выдать имя сигнала, которым была прекращена работа процесса.
Если указан операнд статус_выхода, представляющий собой целое число без знака -
номер сигнала, - выдать имя соответствующего сигнала. В противном случае, результат не определен.
Задает сигнал, который надо послать, используя одно из символьных имен, заданных в
заголовочном файле <signal.h>. Значение сигнала распознается независимо от регистра
символов. При этом префикс SIG указывать не надо. Кроме того, распознается символьное имя 0,
представляющее сигнал со значением ноль. Указанный сигнал будет посылаться вместо
стандартного, SIGTERM.
Десятичное целое, задающее процесс или группу процессов, которым надо послать сигнал.
Какие процессы выбираются при указании положительного, отрицательного числа или нуля
в качестве значения pid см. в описании функции kill. Если указан
процесс номер 0, посылается сигнал всем процессам в соответствующей группе процессов.
Если первый операнд pid - отрицательный, перед ним надо указать два дефиса (--),
чтобы он не интерпретировался как опция.
Идентификатор задания системы управления заданиями, определяющий фоноваую группу
процессов, которой надо послать сигнал. Идентифкаторы заданий можно указывать
только для вызовов kill в среде выполнения текущего командного интерпретатора.
Учтите, что идентификаторы заданий можно указывать только в системах, поддерживающих
возможности управления заданиями.
статус_выхода
Десятичное целое, задающее номер сигнала или статус выхода процесса, прекращенного сигналом.
Когда опция -l не указана, стандартный выходной поток не
используется.
Когда опция -l указана, символьное имя каждого сигнала будет
выдаваться в следующем формате:
"%s%c", <сигнал>, <разделитель>
где <сигнал> выдается в верхнем регистре без префикса SIG,
а <разделитель> - либо символ новой строки, либо пробел. Для последнего
выдаваемого сигнала <разделителем> будет символ новой строки.
Когдла указана опция -l и операнд статус_выхода, символьное
имя соответствующего сигнала выдается в следующем формате:
посылают сигнал SIGKILL процессу с идентификатором 100 и всем процессам,
идентфикатор группы процессов которых равен 165, если, конечно, посылающий процесс
имеет право посылки сигнала этим процессам, и процессы с соответствующими
идентификаторами существуют.
Во избежание двусмысленности, если первый аргумент - отрицательное число,
задающее номер сигнала или группы процессов, всегда предполагается, что это номер сигнала.
Поэтому, чтобы послать стандартный сигнал группе процессов (например, 123), надо
использовать команды следующего вида:
Программа завершается со следующими значениями статуса выхода:
0
Для каждого операнда pid был найден хотя бы один соответствующий процесс и
указанный сигнал был успешно обработан хотя бы одним из соответствующих процессов.
Командный интерпретатор sh имеет встроенную версию kill, обеспечивающую
функциональные возможности команды kill при идентификации процессов по номеру задания.
В sh используется следующий синтаксис:
kill [-sig] [pid] [%job]...
kill -l
csh
Командный интерпретатор csh тоже имеет встроенную команду kill со следующим
синтаксисом:
kill [-sig] [pid] [%job]...
kill -l
Встроенная в csh команда kill посылает стандартный сигнал TERM или
указанный сигнал процессам с указанными идентификаторами процесса, номерами задания, или
текущему заданию. Сигналы задаются по номеру или по имени. Стандартного сигнала нет.
Команда kill без аргументов не посылает сигнал текущему заданию. Если посылается
сигнал TERM или HUP, то заданию и процессу посылается также сигнал CONT
(продолжить).
-l
Выдает имена сигналов, которые можно посылать.
ksh
Синтаксис встроенной команды kill в командном интерпретаторе ksh:
kill [-sig] [pid] [%job]...
kill -l
Версия kill в ksh посылает либо сигнал TERM, либо указанный сигнал
указанным заданиям или процессам. Сигналы задаются по номерам или по именам (как описано
на странице справочного руководства signal(3HEAD), но
без префикса "SIG"). Если посылается сигнал TERM или HUP), заданию
или процессу посылается также сигнал CONT, если процесс остановлен. В качестве
аргумента job можно указать индентификатор процесса, не входящего ни в одно из активных заданий.
Вторая форма вызова, kill -l, выдает номера и соответствующие имена поддерживаемых сигналов.
Скорее всего, первая часть учебного курса "Основы ОС UNIX". Давно уже
обещал... Или перевод
какой-нибудь полезной странички по Solaris.
Следите за новостями
на сайте рассылки.