Não. SIGHUP
provavelmente não significa o que você acha que faz.
Nos tempos antigos (e estou falando dos anos 70 aqui), um terminal era um dispositivo que se conectava a uma máquina UNIX por meio de uma linha serial. Isso geralmente era feito por meio de uma conexão de modem, pois, naqueles dias, comprar uma segunda máquina era muito mais caro do que ter que pagar por muita conectividade telefônica; e usando uma linha de modem, você poderia compartilhar uma máquina com alguém distante.
Quando você termina de usar a máquina, é necessário ter certeza de que o que quer que você esteja executando seja interrompido, já que as máquinas não tinham a mesma quantidade de recursos que as máquinas de hoje e, portanto, o sistema Ajudá-lo a garantir que você não se esqueça de fazê-lo enviando um sinal para qualquer processo conectado à sua linha serial quando o modem for desligado. Este foi o sinal 'hangup', cujo nome foi abreviado para SIGHUP
.
Em algum momento, alguém descobriu que às vezes fazia sentido ter um processo executado continuamente, de modo a fornecer algum serviço para os usuários na máquina. Para garantir que o processo continuasse funcionando, era necessário que ele fosse desconectado do terminal em que foi iniciado, para que, quando o usuário se desconectasse e o modem desligasse, o processo não fosse resolvido. morto. Além disso, se o processo não se separasse da linha serial, o terminal não seria liberado e o próximo usuário que tentasse usá-lo não seria capaz de fazê-lo. Então, por essas razões, você destaca.
Agora você tem um processo de longa duração que, em algum momento, pode precisar ser reconfigurado. Você poderia reiniciá-lo, ou você poderia fazer o processo pesquisar seu arquivo de configuração de vez em quando. Ambos os recursos de resíduos, no entanto. Seria muito melhor se você pudesse dizer quando reler seu arquivo de configuração. Já que há um sinal que, para um daemon, não tem sentido, por que não reutilizar isso? Certo, então foi isso que aconteceu, e como resultado, uma convenção hoje é, de fato, que os daemons relerem o arquivo de configuração quando receberem SIGHUP
.
Mas isso é apenas uma convenção, e não é de modo algum uma regra geral. A finalidade principal e documentada de SIGHUP
ainda é sinalizar o fato de que a conexão do terminal foi interrompida. Por esse motivo, a ação padrão para qualquer programa após o recebimento do sinal SIGHUP
ainda será encerrada, mesmo que o processo seja um daemon.
Como tal, uma init
implementação não pode enviar apenas SIGHUP
para processos aleatórios que ela gerencia. Sim, em muitos casos, a ação de recarga acaba enviando SIGHUP
para o daemon por meio de qualquer configuração que o sistema init tenha (seja scripts de inicialização, arquivos de unidade do systemd, configuração iniciante ou qualquer outra coisa); mas é incorreto supor que isso é o que sempre acontecerá e, portanto, se também é incorreto dizer que os dois são equivalentes.
Ocasionalmente, isso também explica porque o envio de SIGHUP
para um sshd
no comando de um terminal mata a sessão; é porque o sshd assume que algo matou a conexão e que, portanto, deve terminar.