Поведінка програми, коли отримується kill -HUP?


32

Чи є спосіб дізнатися, що буде робити програма, коли вона отримає сигнал HUP HUP?
Без просто запуску команди ofc: D

Наприклад,
killall -HUP pppdперезапустити pppd
killall -HUP firefoxбуде просто вбити firefox

Відповіді:


47

Прочитайте його документацію. Це єдиний спосіб. Як Кіт уже писав , початкове значення SIGHUP полягало в тому, що користувач втратив доступ до програми, і тому інтерактивні програми повинні померти. Daemons - програми, які не взаємодіють безпосередньо з користувачем - не потребують такої поведінки, і натомість часто перезавантажують свої конфігураційні файли, коли отримують SIGHUP. Але це лише умовності.

Якщо у вас є джерело, ви також можете його прочитати. Або якщо у вас є лише двійковий файл, ви можете спробувати його розібрати, шукати sigactionдзвінки, на які встановлюється обробник сигналу SIGHUP, і спробувати розібратися, що роблять ці обробники сигналів. Буде легше домовитись не надсилати SIGHUP в цю програму.

У будь-який момент часу даний процес знаходиться в одному з трьох станів щодо конкретного сигналу: ігноруючи його, виконуючи дію за замовчуванням або запускаючи користувальницький обробник. Багато уніцій дозволяють бачити сигнальну маску процесу ps, наприклад, з ps sLinux. Це може сказати вам, якщо процес ігнорує сигнал або загине миттєво на SIGHUP, але якщо процес встановив обробник, ви не можете сказати, що робить обробник.


1
SIGHUP повертається до часів комутованих модемів. Це сигналізувало про припинення зв'язку модему. Він все ще стосується перерваних з’єднань, але в наші дні рідко відбувається зависання, яке призводить до припинення з'єднання.P
BillThor,

@bill Правда, але сеанс SSH також буде ЗНАЧИТИ його дочірнім процесом, якщо він втратить клієнтське з'єднання.
Кіт

@Keith: Ось чому я вказав, що він застосовується до перерваних з'єднань і вже рідко викликається зависанням. У цей момент було б заплутаним змінити свою назву на щось, пов’язане з відключеннями, наприклад, SIGDCN.
BillThor

18

Дія за замовчуванням - це припинення процесу на SIGHUP. Дивіться man 7 signalдокладнішу інформацію. Але програми можуть захоплювати це і робити все, що завгодно. Оскільки демонові процеси ніколи не повинні виходити, вони зазвичай використовують SIGHUP для інших цілей, наприклад, для реініціалізації (як це робить pppd). Firefox зберігає дію за замовчуванням.

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