linux脚本杀死java进程

时间:2012-12-04 21:02:12

标签: linux bash kill-process

我希望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 ~]$

5 个答案:

答案 0 :(得分:86)

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

pkill -f 'java -jar'

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

pkill -f 'java.*lnwskInterface'

答案 1 :(得分:36)

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

killall java

但是,如果你想特别杀掉 wskInterface 进程,那么你就是大部分时间,你只需要删除进程id;

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

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

答案 2 :(得分:1)

如果有多个Java进程,而您希望使用一个命令将其杀死 尝试以下命令

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

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

答案 3 :(得分:0)

使用jps列出正在运行的java进程。该命令返回进程ID以及主类。您可以使用kill命令使用返回的id终止进程,或使用以下一个内联脚本。

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

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

答案 4 :(得分:0)

pkill -f因为什么原因对我不起作用。无论做什么,看起来非常挑剔的实际上是通过ps aux显示我清楚显示的内容。

经过一个下午的咒骂之后,我开始在我的开始剧本中添加以下内容:

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