O que -HUP faz quando usado com killall?

16

Às vezes, quando estou executando um killallcomando do Terminal, um colega de trabalho sugere ou edita meus scripts para mostrar killall -HUP.

O que a -HUPpeça faz?

Danijel-James W
fonte
Aqui está a página de manual da Apple para killall: developer.apple.com/library/mac/documentation/Darwin/Reference/… parece h = ajuda, u = usuário ep = processo. Mas essas são todas minúsculas. Não vejo parâmetros maiúsculas na página de homem, mas maiúsculas poderia ter significados completamente diferentes - ou eles podem não existir ..
David DelMonte

Respostas:

21

A -HUPopção é o sinal enviado aos processos pelo killallcomando. Pode ser um pouco difícil de dizer, mas a entrada relevante no killallmanual é:

-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.

A diferença entre o TERMsinal padrão que killallenvia e o HUPsinal depende muito do programa para o qual você está enviando o sinal. No final do programa, eles recebem um valor de sinal de interrupção diferente. Portanto, o programa pode capturar as interrupções e decidir, com base no valor, se elas devem fazer uma coisa ou outra.

O TERMsinal (historicamente o "sinal de término") é normalmente enviado a um programa para solicitar sua terminação (que é uma versão politer de forçar sua terminação com o KILLsinal). O programa é livre para captar e ignorar o TERMsinal. Ele não precisa terminar se não quiser e pode ignorar completamente esse sinal.

O HUPsinal (historicamente o "sinal de interrupção") geralmente é enviado a um programa para solicitar que ele reinicie e re-leia todas as suas configurações no processo. O comportamento real do programa depende da implementação específica do programa. Nem todos os programas são capturados HUPe eles não são obrigados por convenção ou dogma. Por exemplo, o servidor da web Apache captura um HUPsinal e relê todos os seus arquivos de configuração, mas não reinicia nenhum processo.

Se você deseja realmente encerrar os processos e não se preocupar se eles vão pegar e obedecer, o sinal usa o KILLsinal. Não pode ser capturado ou ignorado e resulta no encerramento do processo.

Para uma boa revisão dos sinais POSIX disponíveis, consulte este artigo da Wikipedia .

Ian C.
fonte
2
Na parte inferior da página de manual do killall, na seção VER TAMBÉM, há um link para a página de manual do kill que lista alguns sinais e o que eles fazem.
Ian C.
Eu sou uma daquelas #FAILpessoas que nunca lêem além das opções. Obrigado!
Danijel-James W
Como um "sinal de interrupção", o HUP normalmente é enviado para um programa quando o usuário efetua logout ou finaliza o shell que iniciou o programa. Se a captura do sinal não for implementada pelo programa, o programa normalmente será encerrado. Como observado acima, o programa que recebe o sinal pode implementar qualquer atividade desejada como resultado da captura do sinal, conforme indicado no exemplo do Apache.
Nachbar 29/09/2013
2

O -HUPé o sinal de "desligar" que podem desencadear um aplicativo para cessar, lê-lo do arquivo de configuração, e, em seguida, começar de novo. Não é necessariamente melhor do que usá-lo sem.

killall Finder

e

killall -HUP Finder

São respeitosamente iguais. No OS X Finder será reiniciado, mas irá reler seu arquivo de configuração. Isso pode não ser realmente o caso se o aplicativo que está sendo executado não tiver a -HUPfunção incorporada. Como o pôster anterior mencionou o Apache. Ele lê seus arquivos de configuração, mas não pode ser iniciado novamente.

Tech29
fonte