用于停止java程序的Shell脚本

时间:2010-01-25 11:26:21

标签: java shell ksh

有没有办法通过单独知道名称来停止使用shell脚本运行的java程序。我正在使用ksh shell

5 个答案:

答案 0 :(得分:20)

跟进Mnementh' suggestion

这应该做的工作

jps -l | grep org.example.MyMain | cut -d ' ' -f 1 | xargs -rn1 kill
  • jps -l:列出java进程,其中包含“应用程序主类的完整包名或应用程序JAR文件的完整路径名。”

  • grep:选择您喜欢的流程

  • cut -d -' ' -f 1:使用分隔符“'拆分列中的输出,并仅打印第一个(pid)

  • xargs -rn1 kill:对每个PID执行kill(如果有的话)

请注意,您必须在运行流程时使用相同的用户(或root)运行jps和xargs

答案 1 :(得分:6)

向JVM添加一个唯一属性以便轻松识别它,例如for test.class

java -Duniquename=1 test

杀死它:

ps ax | grep uniquename | grep -v grep | awk '{print $1}' | xargs kill

答案 2 :(得分:3)

您可以使用jps标识与已启动的java程序名称相关联的进程ID(jps是java程序的进程管理器)。使用此ID,您可以正常终止该过程。

答案 3 :(得分:1)

你可以使用pkill:

pkill your_java_program_name

如果只运行程序的一个实例,这将有效。

答案 4 :(得分:1)

你可以使用ps的-o选项来格式化你的输出,

ps -eo cmd,pid | awk '!/awk/&&/mycommand/{cmd="kill -9 "$2;system(cmd)}'