【问题标题】:Kill Java Thread In Linux在 Linux 中杀死 Java 线程
【发布时间】:2019-03-05 05:48:32
【问题描述】:

在 Linux 服务器中,我有一个 Java 应用程序... 有时它的线程卡住了.. 我怎样才能找到它们并杀死 Java 的特定线程。 我想杀死那个需要超过 5 分钟时间的 java 线程 Top -H 结果为图像

【问题讨论】:

  • 不要说 type kill -9 我想创建一个 shell 脚本来检测它自己的进程 id。
  • 您应该将创建一个 shell 脚本作为问题的一部分。
  • 我已经在这里有了它并删除了它,因为我虽然:它并没有真正帮助你 - 但 FWIW:shell 脚本的 pid 通常是 $$。 ps 和 jps 列出进程,是的,您可以过滤(grep)特定名称和时间 - 也可以是开始时间并杀死它。但那是你真正想要的吗?被资源阻塞的 BTW 进程不能被杀死。
  • 试试kill -9 $(ps -eo comm,pid,etimes | awk '/^processname/ {if ($3 > 300) { print $2}}')。不知道您是否可以找到适合您的应用程序的processname。这里 300 是运行时间。

标签: java linux java-threads kill-process


【解决方案1】:

你不能只杀死一个进程的一个线程,如果你使用命令“kill -9 threadNo”,你会杀死这个进程。

【讨论】:

    【解决方案2】:

    使用下面查找java进程

    $ ps -fea | grep -i java

    这是示例输出

    用户 2895 8191 0 09:28 pts/1 00:00:00 grep -i java
    用户4610 4607 1 Aug29 ? 01:40:00 /home/user/Software/java-7-sun/bin/java -Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx768m -XX:MaxPermSize=256m -jar /home/user/Software/springsource/sts- 3.3.0.RELEASE//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

    然后杀死进程

    $ kill -9 4610

    由于您想通过 Shell 自动执行此操作,若要获取 pid,请使用您的特定 java 应用程序在文本中进一步搜索(可能是应用程序的搜索位置)

    ps -ef | grep java | grep -v grep

    使用 SED 提取 PID 部分

    【讨论】:

    • OP 说 我想杀死那个需要超过 5 分钟时间的 java 线程
    猜你喜欢
    • 2017-06-18
    • 2010-11-09
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多