如何终止除特定进程之外的所有进程

如何终止除特定进程之外的所有进程

在我的本地服务器上,许多 Java 进程正在运行,同时我正在使用 Eclipse。现在,当我需要重新启动进程时(我通过 shell 脚本启动进程),每次启动之前我都需要通过以下方式终止旧进程:

方法 1:-( kill -9 $Pid 逐一执行每个过程,这很耗时)

方法 2:-( killall -9 java适用于所有进程 - 简单,但 Eclipse 也会被不必要地杀死)

如果使用方法 2,Eclipse 也会被杀死,这是我最不希望看到的。有什么办法可以解决这个问题吗?我敢打赌肯定有 :P

编辑:我正在使用 ubuntu 15.04。

答案1

尝试一下这个命令:

ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill

这将搜索所有包含 java 并排除 eclipse 的进程,然后终止它们

答案2

使用awk

ps ax | awk '/java/ && !/eclipse/ {system("kill "$1)}'

该命令会终止所有java进程,但不会终止该进程eclipse

答案3

怎么样 :

pgrep -af 'java' | grep -Po '^[^ ]+(?!.*eclipse)' | xargs kill
  • pgrep -af 'java'java在完整命令行中搜索进程并列出它们

  • grep -Po '^[^ ]+(?!.*eclipse)'在搜索到的进程中查找并获取没有eclipse完整命令行的进程的进程 ID

  • xargs kill将终止该进程。

答案4

ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill

相关内容