Что -HUP делает при использовании с killall?

16

Иногда, когда я запускаю killallкоманду из Терминала, сотрудник предлагал или редактировал мои сценарии для показа killall -HUP.

Что делает -HUPчасть?

Даниэль-Джеймс W
источник
Вот справочная страница Apple для killall: developer.apple.com/library/mac/documentation/Darwin/Reference/… похоже, что h = help, u = пользователь и p = process. Но это все строчные. Я не вижу параметров верхнего регистра на странице руководства, но верхний регистр может иметь совершенно разные значения - или они могут не существовать ..
David DelMonte

Ответы:

21

-HUPВариантом является сигналом того, что послал к процессам с помощью killallкоманды. Это может быть немного трудно сказать, но соответствующая запись в killallруководстве :

-SIGNAL     Send a different signal instead of the default TERM.  The signal may be specified
            either as a name (with or without a leading SIG), or numerically.

Разница между по умолчанию TERMсигнала , который killallпосылает и HUPсигнал во многом зависит от программы , которую вы посылающая сигнал. В конце программы они получают другое значение сигнала прерывания. Таким образом, программа может перехватывать прерывания и решать, основываясь на значении, следует ли им делать одно или другое.

TERMСигнал (исторически «прекращает сигнал»), как правило , отправляются в программу для запроса о его прекращении (который является версией politer из принуждая его прекращение с KILLсигналом). Программа может свободно ловить и игнорировать TERMсигнал. Он не должен завершаться, если не хочет, и может полностью игнорировать этот сигнал.

HUPСигнал (исторически «зависание сигнал»), как правило , направляют в программу на запрос , что она перезапускается и повторно считывает всю его конфигурацию в этом процессе. Реальное поведение программы зависит от конкретной реализации программы. Не все программы ловят, HUPи они не обязаны соглашаться или догмой. Например, веб-сервер Apache перехватит HUPсигнал и перечитает все свои файлы конфигурации, но не перезапустит какие-либо процессы.

Если вы хотите действительно завершить процессы и не беспокоиться о том, собираются ли они поймать сигнал и использовать его, он использует KILLсигнал. Он не может быть пойман или проигнорирован и приводит к завершению процесса.

Для хорошего обзора доступных сигналов POSIX см. Эту статью Википедии .

Ян С.
источник
2
Внизу справочной страницы для killall, в разделе СМОТРИ ТАКЖЕ, находится ссылка на справочную страницу kill, в которой перечислены некоторые сигналы и их действия.
Ян С.
Я один из тех #FAILлюдей, которые никогда не читают мимо выключателей. Спасибо!
Даниэль-Джеймс W
В качестве «сигнала зависания» HUP обычно отправляется программе, когда пользователь выходит из системы или завершает работу оболочки, которая запустила программу. Если перехват сигнала не реализован программой, программа обычно завершается. Как отмечено выше, программа, принимающая сигнал, может реализовать любую желаемую активность в результате перехвата сигнала, как указано в примере с Apache.
nachbar
2

Это -HUPсигнал «зависания», который может привести к прекращению работы приложения, чтению его конфигурационного файла и последующему запуску. Это не обязательно лучше, чем использовать его без.

killall Finder

и

killall -HUP Finder

С уважением то же самое. В OS X Finder перезапустится, но перечитает файл конфигурации. В действительности это может быть не так, если в приложении, в котором запущено приложение, -HUPфункции не встроены. В качестве предыдущего постера упоминается Apache. Он читает файлы конфигурации, но не может снова запуститься.

Tech29
источник