уничтожьте-9 и производственное приложение

Который может вызвать проблема kill -9 в производственном приложении (в Linux, чтобы быть точным)?

У меня есть приложение, которые делают некоторая периодическая работа, останавливая их занимает много времени, и я не забочусь, будут ли некоторые задания прерваны - работа может быть закончена к новым процессам. Так могу я использовать kill -9 только для остановки его сразу или это может вызвать серьезные проблемы ОС?

Например, Единорог, использование это как нормальная рабочая процедура:

Когда Ваше приложение спутывается, BOFH может просто "уничтожить-9" безудержный рабочий процесс, не вызывая беспокойство о разъединении всех клиентов, всего один.

Но эта статья требования:

-9 (или УНИЧТОЖАЮТ) аргумент для уничтожения (1) никогда не должны использоваться в системах Unix

PS: Я понимаю это kill -9 не может быть обработан приложением, но я знаю, что для приложения в мае оно не вызывает проблем, я просто заинтересовал его, может вызвать некоторые проблемы на уровне ОС? shared memory segments active, lingering sockets звучит опасным для меня.

6
задан valodzka 5 June 2010 в 11:46
поделиться

4 ответа

Это зависит от того, что это за приложение.

Что-то вроде базы данных может либо потерять данные (если она не записывает все свои данные в постоянный журнал транзакций сразу), либо потребовать больше времени для следующего запуска, либо и то, и другое.

Хотя Crash-only - это хороший принцип, немногие приложения в настоящее время ему соответствуют.

Например, база данных mysql не является "только аварийной", и ее уничтожение командой kill -9 приведет либо к значительному увеличению времени запуска (по сравнению с чистым выключением), либо к потере данных, либо к обоим последствиям, в зависимости от настроек (и в некоторой степени от удачи).

С другой стороны, Cassandra фактически поощряет использование kill -9 в качестве механизма выключения; ничего другого она не поддерживает.

1
ответ дан 17 December 2019 в 00:03
поделиться

kill -9 не дают приложение шанс закрыть чисто.

Обычно приложение может поймать SIGINT / SIGTERM и корректно завершить работу (закрыть файлы, сохранить данные и т. Д.). Приложение не может поймать SIGKILL (которое происходит с kill -9 ), и поэтому оно не может выполнить любую из этих (необязательных) очисток.

Лучше использовать стандартное kill , а если приложение не отвечает, используйте kill -9 .

4
ответ дан 17 December 2019 в 00:03
поделиться

Приложение не может перехватить сигнал KILL. Если приложение находится в процессе записи сложной структуры данных на диск, когда вы его уничтожаете, эта структура может быть записана только наполовину, что приведет к повреждению файла данных. обычно лучше всего реализовать какой-либо другой сигнал, такой как USER1, в качестве сигнала «стоп», так как он может быть перехвачен и позволяет приложению завершиться управляемым образом.

0
ответ дан 17 December 2019 в 00:03
поделиться

kill -9 не вызовет никаких "серьезных проблем с ОС". Но процесс будет немедленно остановлен, что означает, что он может оставить данные в странном состоянии.

2
ответ дан 17 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: