【问题标题】:How to quickly kill java processes in bash?如何快速杀死bash中的java进程?
【发布时间】:2013-03-19 19:05:57
【问题描述】:

在 linux 机器上,我最多运行 3 个 java jars 文件。如何用一个命令快速杀死所有 3 个?

通常我会:

ps ex - 让进程运行

然后找到进程ID然后做:

杀死 -9 #### #### ####

有什么方法可以缩短这个过程吗?眯着眼睛寻找进程 ID,我的眼睛很痛。

我的脚本执行以下操作:

nohup ./start-gossip &

nohup ./start &

nohup ./start-admin &

有没有办法在不查找的情况下获取每个进程的 ID?

【问题讨论】:

  • "squinting" -- 更大的字体。
  • 字体够大,每次我用“ps ex”都会显示太多东西

标签: bash kill


【解决方案1】:

简答:

pkill java

这会按名称查找要杀死的进程(或多个进程)。这也会找到任何其他java 进程,所以要小心。它也接受-9,但你应该避免使用-9,除非某些东西真的坏了。

编辑:

根据更新,您也可以将脚本名称指定为pkill(我不肯定)。但是,处理这个问题的更传统的方法是留下 pid 文件。在您启动一个新进程并将其后台运行后,它的 pid 在$! 中可用。如果您将该 pid 写入文件,则很容易检查该进程是否仍在运行并仅终止您想要的进程。不过,这个 pid 有可能会被重用。

【讨论】:

  • 这看起来不错,但我想我必须小心这个,因为它会杀死所有 java..
  • 如果您不确定,可以使用相应的pgrep 命令先查找pid。
  • 太棒了!!!你这是一种组合这些命令的方法吗?像“kill -9 pgrep java”之类的东西?但是我可以只使用 pkill 命令.. 嗯...
  • pgrep java | xargs kill 但就像你说的,当你有pkill 时有点多余。
  • 我真的希望当我启动这些 jars 时,我可以以某种方式保存进程 ID,只需从 txt 文件或其他内容中读取它,然后以这种方式杀死它们.. 但是 pkill 现在很好.谢谢!!
【解决方案2】:

您可以在启动进程时保存 PID,以便以后使用它们:

nohup ./start-gossip &
START_GOSSIP_PID=$!

nohup ./start &
START_PID=$!

nohup ./start-admin &
START_ADMIN_PID=$!

...

kill -9 $START_GOSSIP_PID
kill -9 $START_PID
kill -9 $START_ADMIN_PID

这样做的好处是(超过pkill)不会杀死任何其他巧合名称相似的进程。如果您不想从脚本本身执行 kill 操作,而只想方便地使用 PID,请将它们写入文件(从脚本):

echo $START_GOSSIP_PID > /some/path/start_gossip.pid

或者甚至只是在启动进程时执行此操作,而不是将 PID 保存到变量中:

nohup ./start-gossip &
echo $! > /some/path/start_gossip.pid

【讨论】:

  • 确实如此。早在 2013 年,新手程序员。这就是我现在使用的。当然,我将我的 pid 保存到 /tmp
【解决方案3】:

获取该 java 进程运行的进程 ID

netstat -tuplen

您要杀死并运行的进程的进程 ID (PID)

杀死 -9 PID

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2016-01-24
    相关资源
    最近更新 更多