Процесс Java уничтожает мой компьютер (Intel i3, 8 ГБ RAM). Это принимает целый ЦП, и система начинает зависать. Я пытался измениться niceness
из процессов Java, но я должен управлять им навсегда, и это не всегда возможно. Таким образом для начала я пытался создать команду для изменения процесса niceness
по имени. Законченный с чем-то вроде этого:
ps ax -o pid,comm | grep java | awk '{print $1}' | tr "\n" " " | renice -n 5 -p
Но похоже, что это не работает. И я не знаю, куда пойти затем. Сценарий Bash, возможно? Выполните его cron
или watch
каждый x
время? Или есть ли лучший путь?
Если у Вас есть только один java
выполнение экземпляра, просто:
renice -n 5 -p $(pgrep ^java$)
$(pgrep ^java$)
: замена команды; bash
замены это с выводом pgrep ^java$
; pgrep ^java$
возвращает список PIDs процессов, имя которых соответствует регулярному выражению ^java$
, который соответствует всем процессам, имя которых точно java
Если у Вас есть несколько java
выполнение экземпляров:
for p in $(pgrep ^java$); do renice -n 5 -p $p; done
for p in $(pgrep ^java$); do renice -n 5 -p $p; done
: почти то же как выше; $(pgrep ^java$)
замена команды; bash
замены это с выводом pgrep ^java$
; pgrep ^java$
возвращает список PIDs процессов, имя которых соответствует регулярному выражению ^java$
, который соответствует всем процессам, имя которых точно java
; это расширено в for
цикл, который присваивает новую строку вывода pgrep ^java$
к переменной $p
и выполнения renice -n 5 -p $p
при каждом повторении до вывода pgrep ^java$
используетсяПопробуйте это:
pgrep java | xargs -n 1 echo renice -n 5 -p
, Если произведенный хорошо, удалите echo
.
В конце концов, я произошел, это была проблема памяти. Я не установил максимальную память для Причала, таким образом, это пыталось выделить 1/4 всей памяти. Также я нашел конечное решение для таких проблем здесь:
Самым легким путем я нашел, использует эти pidof
команда:
renice <new niceness> -p $(pidof <process name>)
найденный от: http://www.commandlinefu.com/commands/view/4614/renice-by-name
Для Вашей ситуации, вероятно, помещает ту команду в crontab -e
(как корень) с любым периодом, который Вы хотите (скажите каждые 30 минут). Кажется, что необходимо найти первопричину нового и ресурса-hogging процессами Java и видеть, можно ли фиксировать/предотвращать это.