linux脚本杀死java进程

linux脚本杀死java进程,linux,bash,kill-process,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@s

我想要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进程。该命令返回进程id和主类。您可以使用kill命令使用返回的id终止进程,也可以使用以下一个线性脚本

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

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

pkill-f由于任何原因对我都不起作用。无论它做什么,它似乎非常挑剔,实际上通过ps aux显示我清楚地看到了什么

在一个下午的宣誓之后,我开始在我的开始脚本中添加以下内容:


(ps aux | grep-v-e'grep'| grep MainApp | tr-s | cut-d | f2 | xargs kill-9)正确

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

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

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

pkill java是否算数?我总是惊讶地看到
grep
s被导入
awk
s!!!我们可以称之为Grep的无用使用吗?不管怎么说,最好像anubhava提到的那样使用
pkill
-f
选项(当然,如果你安装了
pkill
,如果它有
-f
选项),我尝试了“PID=
ps-ef | grep wskInterface | awk'{print$2}'
kill-9$PID”,并找到了-bash:kill:(10395)-没有这样的过程。它实际上扼杀了这个过程,但也给了error@Faisalkhan这是因为您试图杀死
ps
进程本身
:-(
。不要使用这种方法,改用anubhava的方法。@gniourf|gniourf我发现grep在过滤行时更容易一些。是的,我在键入它时知道这种方法有点不合适,但它应该可以工作。而且它很胡子,我喜欢。
ps-ef | grep wskInterface | grep-v grep | awk'{print$2}“
忽略您自己的grep命令。是的,您也可以添加jar名称。现在,我在ps中的jar看起来像rcapp 23671 1 16 11:23 pts/0 00:00:03/usr/java/jdk1.6.0_37//bin/java-Xmx2048m-Drdc.log.file=/home/rapp/apps/LNWSKInterface/logs/dev.log-jar/home/rapp/apps/LNWSKInterface/jar/LNWSKInterface.jar,如果我使用pkill-f'java-jar-jar,它就不需要了。”ot工作。我可以像下面那样使用通配符pkill-f‘java*-jar’吗?你可以使用:
pgrep-如果‘java.*-jar’
你很有帮助,我很感谢你,还有最后一个问题我在尝试pkill-f‘java.*$app’时导出了变量$app=lnwskInterface,但没有成功。提前谢谢你的帮助,请用双引号代替:
pkill-f“java.*$app”
@xerustry kill
$(jps-l | grep | awk'{print$1}')
问题似乎是grep。你的任何一个建议只有在我取出grep后才有效