O sinal pode ser capturado de um processo em execução . Portanto, se você iniciar um processo de longa duração (também conhecido como daemon) na inicialização, você receberá um SIGTERM desse processo e fará o que quiser com o manipulador de sinal. No entanto, esse é o pior método possível: um processo extra sem fazer nada e apenas aguardando a chegada de um sinal.
Você tem melhores maneiras de conseguir isso, esp. com systemd. O arquivo de unidade ( foo.service
) terá a seguinte aparência:
[Unit]
Description=Perform my actions
DefaultDependencies=no
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/path/to/your/application
No entanto, tenha em mente que, devido à natureza paralela do systemd, esta unidade pode ser iniciada arbitrariamente atrasada no processo de desligamento (embora isso possa ser influenciado pelo uso cuidadoso das dependências).