52

我希望 linux 脚本杀死在控制台上运行的 java 程序。

以下是作为 jar 运行的进程。

[rapp@s1-dlap0 ~]$ ps -ef |grep java
rapp    9473    1  0 15:03 pts/1    00:00:15 java -jar wskInterface-0.0.1-SNAPSHOT-jar-with-dependencies.jar
rapp   10177  8995  0 16:00 pts/1    00:00:00 grep java
[rapp@s1-dlap0 ~]$
4

5 回答 5

108

您可以pkill -f像这样简单地使用:

pkill -f 'java -jar'

编辑:要杀死运行特定 jar 的特定 java 进程,请使用此基于正则表达式的 pkill 命令:

pkill -f 'java.*lnwskInterface'
于 2012-12-04T21:07:43.330 回答
43

如果您只想杀死任何/所有 java 进程,那么您只需要;

killall java

但是,如果您想特别终止 wskInterface进程,那么您已经完成了大部分工作,您只需要去掉进程 ID;

PID=`ps -ef | grep wskInterface | awk '{ print $2 }'`
kill -9 $PID

应该这样做,但可能有一种更简单的方法......

于 2012-12-04T21:08:56.500 回答
2

如果有多个 java 进程并且您希望用一个命令杀死它们,请尝试以下命令

kill -9 $(ps -ef | pgrep -f "java")

用任何进程字符串标识符替换“java”,以杀死其他任何东西。

于 2020-07-15T02:47:49.213 回答
1

pkill -f 无论出于何种原因对我都不起作用。无论做什么,实际上通过 ps aux 清楚地显示给我的东西似乎非常挑剔。

经过一个下午的宣誓后,我将以下内容放入我的开始脚本中:

(ps aux | grep -v -e 'grep ' | grep MainApp | tr -s " " | cut -d " " -f 2 | xargs kill -9 ) || true

于 2018-05-30T14:47:59.397 回答
0

使用jps列出正在运行的 java 进程。该命令返回进程 ID 以及主类。您可以使用 kill 命令以返回的 id 杀死进程或使用以下一个衬里脚本。

kill $(jps | grep <MainClass> | awk '{print $1}')

MainClass 是您正在运行的 java 程序中的一个类,它包含 main 方法。

于 2017-09-08T20:02:44.487 回答