Установить настройку убийцы OOM для процесса при запуске?

Если выполняется запуск файла .jar из командной строки (java -jar myFile.jar), но двойного щелчка по нему в графическом интерфейсе нет, и если sudo chmod +x myFile.jar окажется успешным, но вы все еще не можете открыть с помощью двойного щелчка , и если щелкнуть правой кнопкой мыши файл .jar> Свойства> Разрешения> «Разрешить выполнение файла как программы» не работает (т. е. флажок отключается сразу после нажатия), возможно, файл .jar находится в файле NTFS которая не позволяет выполнять разрешения для каждого файла. (Возможно, у вас может возникнуть эта проблема, если вы используете, например, двойную загрузку и имеете общий раздел NTFS между Ubuntu и Windows).

Создание пусковой установки (как описано в @ tusharkant15) будет работать, потому что за кулисами вы выполняете /usr/bin/java, а не файл .jar. Перемещение файла .jar в другую файловую систему, которая не является NTFS, также будет работать.

4
задан 2 March 2012 в 20:20

4 ответа

Я думаю, что лучше всего было бы добавить отдельный скрипт как часть вашего init.d. В этом случае вы захотите сделать что-то вроде этого

echo 15 > /proc/`pidof APP_NAME`/oom_adj

. [F2] получит идентификатор процесса приложения с этим именем. Запись 15 в / proc / {pid} / oom_adj поднимает «плохость» процесса {pid}, что делает его более вероятным убить убийцей OOM.

Статья Укрощение убийцы OOM от LWN.net также намекает на некоторые другие идеи, которые предлагались разрешить спецификацию «oom_victim», но я не уверен, что кто-либо из них действительно находится в ядре.

BTW: Лучшим решением было бы избежать необходимости используйте OOM Killer в первую очередь. Помните неписанный девиз Micro $ oft: Нет проблем, больше не может быть исправлено.

[Примечание: если может быть несколько таких процессов, вы можете немного пересмотреть код.] [ ! d5]

4
ответ дан 25 May 2018 в 20:02
  • 1
    Спасибо за ответ. Да, было бы неплохо, если бы я мог добавить RAM, но есть предел. И ситуация возникает редко, но я чаще это вижу с Apache, чем на других машинах с lighttpd. Поэтому я перейду на долгосрочную перспективу. Спасибо также за ссылку на статью LWN. Что касается вашей заметки в конце, я просто займусь чем-то вроде for pid in $(pgrep APP_NAME); do echo ...; done – 0xC0000022L 30 June 2011 в 21:43

Для ubuntu 15.04 это изменилось.

Правильный способ установки установки oom для pid:

echo 42 > /proc/666/oom_score_adj

вместо /proc/666/oom_adj

0
ответ дан 25 May 2018 в 20:02

Для ubuntu 15.04 это изменилось.

Правильный способ установки установки oom для pid -

echo 42 > /proc/666/oom_score_adj

вместо /proc/666/oom_adj

0
ответ дан 4 August 2018 в 19:09

Для ubuntu 15.04 это изменилось.

Правильный способ установки установки oom для pid -

echo 42 > /proc/666/oom_score_adj

вместо /proc/666/oom_adj

0
ответ дан 6 August 2018 в 03:26

Другие вопросы по тегам:

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