Що робить -HUP при використанні з Killall?


16

Іноді, коли я запускаю killallкоманду від Terminal, колега запропонував або відредагував мої сценарії для показу killall -HUP.

Що робить -HUPчастина?


Ось сторінка man від Apple для killall: developer.apple.com/library/mac/documentation/Darwin/Reference/… це виглядає як h = допомога, u = користувач та p = процес. Але це все нижчі регістри. Я не бачу параметрів верхнього регістру на сторінці man, але верхній регістр може мати зовсім інші значення - або вони можуть не існувати ..
David DelMonte

Відповіді:


22

-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
У нижній частині сторінки man для killall, у розділі ДИВІТЬСЯ ТАКОЖ, є посилання на manpage, що містить список сигналів та те, що вони роблять.
Ян C.

Я один із тих #FAILлюдей, які ніколи не читали минулих перемикачів. Дякую!
Danijel-James W

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

2

-HUPЄ «повісити трубку» сигнал , який може викликати додаток , щоб припинити, прочитати це конфігураційний файл, а потім почати знову. Це не обов'язково краще, ніж використовувати його без.

killall Finder

і

killall -HUP Finder

Поважають однаково. В OS X Finder перезапуститься, але він перечитає файл конфігурації. Це насправді не так, якщо програма, що працює, не має -HUPвбудованої функції. Як попередній плакат згадував Apache. Він читає конфігураційні файли, але не може запуститися знову.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.