15

Sometimes when I'm running a killall command from Terminal, a co-worker would suggest or edit my scripts to show killall -HUP.

What does the -HUP part do?

20

The -HUP option is the signal that's sent to the processes by the killall command. It can be a little hard to tell, but the relevant entry in the killall manual is:

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

The difference between the default TERM signal that killall sends and the HUP signal depends largely on the program you're sending the signal to. At the program end, they receive a different interrupt signal value. So the program can catch the interrupts and decide, based on the value, if they should do one thing or the other.

The TERM signal (historically the "terminate signal") is usually sent to a program to request its termination (which is a politer version of forcing its termination with the KILL signal). The program is free to catch and ignore the TERM signal. It doesn't have to terminate if it doesn't want to and it can completely ignore this signal.

The HUP signal (historically the "hangup signal") is usually sent to a program to request that it restarts and re-reads all its configuration in the process. The actual behaviour of the program depends on the program-specific implementation. Not all programs catch HUP and they aren't required to by convention or dogma. For example, the Apache web server will catch a HUP signal and re-read all its configuration files but it won't restart any processes.

If you want to truly terminate the processes and not worry about whether they're going to catch and obey the signal uses the KILL signal. It cannot be caught or ignored and results in process termination.

For a good review of available POSIX signals see this Wikipedia article.

  • 2
    At the bottom of the man page for killall, in the SEE ALSO section, is a link to the kill manpage which lists some signals and what they do. – Ian C. Sep 28 '13 at 15:57
  • I am one of those #FAIL people that never read past the switches. Thank you! – Danijel-James W Sep 28 '13 at 16:21
  • As a "hangup signal", HUP is typically sent to a program when the user logs out or terminates the shell that started the program. If catching the signal is not implemented by the program, the program typically will terminate. As noted above, the program receiving the signal can implement any desired activity as a result of catching the signal, as indicated by the Apache example. – nachbar Sep 29 '13 at 6:32
2

The -HUP is the "hang up" signal that may trigger an app to cease, read it's config file, and then start again. It is not necessarily any better than using it without.

killall Finder

and

killall -HUP Finder

Are respectfully the same. In OS X Finder will relaunch, but it will re-read it's configuation file. This might not be really the case if the application that is running does not have the -HUP function built into it. As the previous poster mentioned Apache. It reads it's config files, but it cannot launch again.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .