В моей компании я видел использование killall -9
, чтобы убивать демонов и затем запускать их снова. (Который действительно должен быть killall -SIGKILL
)
Я пытаюсь объяснить коллегам, что на самом деле мы не должны перезапускать демонов. Возможно, используйте символ SIGINT
, чтобы процесс мог корректно завершить работу, или используйте сценарии init.d
для правильного перезапуска службы.
Мы программируем на C
, может ли что-нибудь произойти, что будет вредным для системы от выполнения SIGKILL
? Очевидно, что этот сигнал не может быть перехвачен процессом, поэтому никакие внутренние обработчики сигналов не могут выполнить какую-либо хорошую обработку выключения, но
- Будут ли корректно очищены буферы чтения / записи файла?
- Правильно ли будет динамически восстанавливаться память?
- Есть еще примеры?
Я мог догадаться по ответам на эти вопросы, но знает ли кто-нибудь ответы? Может кто-нибудь расширить свои знания Unix, чтобы помочь мне? Вооружившись конкретными знаниями, я могу привести гораздо лучший аргумент!