У меня есть приложение python, использующее витую структуру.
Я использую значение, хранящееся в файле pid, созданном twistd. Сценарий запуска проверяет его присутствие и не запускает процесс-демон, если pid-файл уже существует.
Однако twistd не удаляет файл .pid, когда получает сигнал SIGKILL
. Это заставляет сценарий запуска думать, что демон уже запущен.
Я понимаю, что правильным способом остановки демона было бы использование сигнала SIGTERM
, но проблема в том, что когда пользователь, запустивший демон, выходит из системы, демон никогда не получает сигнал SIGTERM
, поэтому очевидно, что он убит с помощью SIGKILL
. Это означает, что как только пользователь выйдет из системы, он никогда не сможет снова запустить демон, потому что pid-файл все еще существует.
Есть ли способ заставить этот файл исчезнуть в таких ситуациях?