Also known as: signal 1
SIGHUP (signal 1) originally meant "the controlling terminal has hung up", a carryover from the days when terminals were actual modems, and losing carrier would notify the shell and its children. When a login shell receives SIGHUP, it forwards it to its child jobs, which is why closing a terminal usually kills everything running in it.
Modern daemons repurpose SIGHUP as a "reload your configuration without restarting" signal. Sending kill -HUP nginx causes nginx to re-read its config, reopen log files, and start new worker processes without dropping existing connections. This is now the near-universal convention, which is ironic since the original hangup meaning has mostly faded.
kill -HUP $(pidof nginx)
systemctl reload nginx # preferred; systemd knows the signal
nohup long-running-command & # resist SIGHUP when terminal closes
The command nohup arranges for its child to ignore SIGHUP, so long-running jobs survive terminal disconnection. Modern alternatives include running work inside tmux or screen, which do not just ignore SIGHUP but keep the terminal session alive across disconnects.
Discussed in:
- Chapter 10: Processes and Job Control · Signals
Also defined in: Textbook of Linux
