Который может вызвать проблема kill -9
в производственном приложении (в Linux, чтобы быть точным)?
У меня есть приложение, которые делают некоторая периодическая работа, останавливая их занимает много времени, и я не забочусь, будут ли некоторые задания прерваны - работа может быть закончена к новым процессам. Так могу я использовать kill -9
только для остановки его сразу или это может вызвать серьезные проблемы ОС?
Например, Единорог, использование это как нормальная рабочая процедура:
Когда Ваше приложение спутывается, BOFH может просто "уничтожить-9" безудержный рабочий процесс, не вызывая беспокойство о разъединении всех клиентов, всего один.
Но эта статья требования:
-9 (или УНИЧТОЖАЮТ) аргумент для уничтожения (1) никогда не должны использоваться в системах Unix
PS: Я понимаю это kill -9
не может быть обработан приложением, но я знаю, что для приложения в мае оно не вызывает проблем, я просто заинтересовал его, может вызвать некоторые проблемы на уровне ОС? shared memory segments active, lingering sockets
звучит опасным для меня.
Это зависит от того, что это за приложение.
Что-то вроде базы данных может либо потерять данные (если она не записывает все свои данные в постоянный журнал транзакций сразу), либо потребовать больше времени для следующего запуска, либо и то, и другое.
Хотя Crash-only - это хороший принцип, немногие приложения в настоящее время ему соответствуют.
Например, база данных mysql не является "только аварийной", и ее уничтожение командой kill -9 приведет либо к значительному увеличению времени запуска (по сравнению с чистым выключением), либо к потере данных, либо к обоим последствиям, в зависимости от настроек (и в некоторой степени от удачи).
С другой стороны, Cassandra фактически поощряет использование kill -9 в качестве механизма выключения; ничего другого она не поддерживает.
kill -9
не дают приложение шанс закрыть чисто.
Обычно приложение может поймать SIGINT / SIGTERM
и корректно завершить работу (закрыть файлы, сохранить данные и т. Д.). Приложение не может поймать SIGKILL
(которое происходит с kill -9
), и поэтому оно не может выполнить любую из этих (необязательных) очисток.
Лучше использовать стандартное kill
, а если приложение не отвечает, используйте kill -9
.
Приложение не может перехватить сигнал KILL. Если приложение находится в процессе записи сложной структуры данных на диск, когда вы его уничтожаете, эта структура может быть записана только наполовину, что приведет к повреждению файла данных. обычно лучше всего реализовать какой-либо другой сигнал, такой как USER1, в качестве сигнала «стоп», так как он может быть перехвачен и позволяет приложению завершиться управляемым образом.
kill -9
не вызовет никаких "серьезных проблем с ОС". Но процесс будет немедленно остановлен, что означает, что он может оставить данные в странном состоянии.