Как изменить правильность процесса по имени

Процесс 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 время? Или есть ли лучший путь?

6
задан 28 June 2015 в 03:18

4 ответа

Если у Вас есть только один 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$ используется
8
ответ дан 23 November 2019 в 07:24

Попробуйте это:

pgrep java | xargs -n 1 echo renice -n 5 -p

, Если произведенный хорошо, удалите echo.

5
ответ дан 23 November 2019 в 07:24

В конце концов, я произошел, это была проблема памяти. Я не установил максимальную память для Причала, таким образом, это пыталось выделить 1/4 всей памяти. Также я нашел конечное решение для таких проблем здесь:

уничтожитель OOM, не работающий?

0
ответ дан 23 November 2019 в 07:24

Самым легким путем я нашел, использует эти pidof команда:

renice <new niceness> -p $(pidof <process name>)

найденный от: http://www.commandlinefu.com/commands/view/4614/renice-by-name

Для Вашей ситуации, вероятно, помещает ту команду в crontab -e (как корень) с любым периодом, который Вы хотите (скажите каждые 30 минут). Кажется, что необходимо найти первопричину нового и ресурса-hogging процессами Java и видеть, можно ли фиксировать/предотвращать это.

0
ответ дан 23 November 2019 в 07:24

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

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