我希望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 ~]$
简单地使用这样的pkill -f
:
pkill -f 'java -jar'
编辑:要杀死运行特定jar的特定Java进程,请使用以下基于正则表达式的pkill命令:
pkill -f 'java.*lnwskInterface'
如果你只想杀死任何/所有的java进程,那么你所需要的只是;
killall java
但是,如果你想特别杀死wskInterface进程,那么你已经完成了大部分工作,你只需要去掉进程ID;
PID=`ps -ef | grep wskInterface | awk '{ print $2 }'`
kill -9 $PID
应该这样做,不过可能有一种更简单的方法...
如果有多个Java进程,并且您希望用一个命令杀死它们尝试以下命令
kill -9 $(ps -ef | pgrep -f "java")
将"java"替换为任何进程字符串标识符,以杀死其他任何内容。
pkill -f 无论出于何种原因对我都不起作用。不管这样做,实际上通过ps aux清楚地向我展示的内容似乎非常挑剔。
经过一个下午的咒骂,我开始在我的开始脚本中加入以下内容:
(ps aux | grep -v -e 'grep ' | grep MainApp | tr -s " " | cut -d " " -f 2 | xargs kill -9 ) || true
使用 jps 列出正在运行的 Java 进程。该命令返回进程 ID 以及主类。您可以使用 kill 命令终止具有返回 id 的进程,也可以使用以下一个行脚本。
kill $(jps | grep <MainClass> | awk '{print $1}')
MainClass是正在运行的java程序中的一个类,其中包含main方法。