Убейте только один процесс Java

Обычно я запускаю несколько приложений Java, один для сервера, работающего локально, и другого для некоторых IDE, таких как NetBeans. И время от времени, после множества повторных развертываний, мой сервер застревает в OutOfMemoryException, поэтому мне нужно убить Java-процесс для перезагрузки.

Поэтому я делаю pkill -9 java но это также убивает мою текущую IDE, которой я не хочу. Итак, как я могу убить только приложение, связанное с работающим сервером, а не с другими? Я предполагаю, что все они работают под одним и тем же процессом, но должен быть каким-то образом, как устрашить их.

  • Как правильно остановить процесс оболочки busybox и дочерний процесс?
  • killall дает мне «никакого процесса найдено», но ps
  • Как убить работу с помощью бесконечного цикла
  • Как создать cron, который находит / убивает / очищает старые марионетки?
  • Как убить все экраны?
  • получать сигнал до того, как процесс будет убит убийцей / группами OOM
  • Пропустить флаги для xargs
  • Убейте запущенный сценарий оболочки и убейте весь процесс, запущенный внутри него
  • 3 Solutions collect form web for “Убейте только один процесс Java”

    Чтобы убить процесс, связанный с несколькими процессами, вам нужно убить его, используя идентификатор процесса, связанный с этим процессом.

    Чтобы получить идентификатор процесса в этом java-процессе

     ps -A |grep java 

    вывод этой команды даст список java-процессов, запущенных в вашей системе. Запишите идентификатор процесса (PID) этого процесса, которого вы хотите убить и запустить

     kill -9 PID 

    ИМО лучшим решением является:

     pkill -9 -f <nameOfYourJavaAplication> 

    Вместо использования ps и grep вы можете использовать ps -c-флаг ps для выбора всех команд, перечисленных с именем «java». Вы также можете использовать флагом ps -f для печати полного имени команды для каждого перечисленного процесса. Таким образом, вы можете видеть, что делает каждый процесс Java. Вот полная команда: ps -fC java .

    Вы также можете использовать pgrep для перечисления всех java-процессов. pgrep -a java вернет PID и полную командную строку каждого java-процесса.

    Если у вас есть PID команды, которую вы хотите убить, используйте kill с флагом -9 (SIGKILL) и PID процесса Java, который вы хотите убить. Java не всегда останавливается, когда получает сигнал «SIGTERM» (процессам разрешено обрабатывать «SIGTERM»), поэтому отправка сигнала «SIGKILL», который заставляет init убивать программу без предварительного предупреждения, часто требуется.

    Например, если ps -fC java возвращается

     UID PID PPID C STIME TTY TIME CMD jeff 9014 8890 0 08:51 pts/0 00:00:00 java IDE jeff 11775 8890 6 08:59 pts/0 00:00:00 java TestProgram 

    или psgrep -a java возвращает psgrep -a java

     9014 java IDE 11775 java TestProgram 

    и вы хотите убить java TestProgram , вы должны запустить kill -9 11775 .

    Linux и Unix - лучшая ОС в мире.