我希望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 ~]$
答案 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)
经过一个下午的咒骂之后,我开始在我的开始剧本中添加以下内容:
(ps aux | grep -v -e 'grep ' | grep MainApp | tr -s " " | cut -d " " -f 2 | xargs kill -9 ) || true