【问题标题】:How to kill a java process by name in python?如何在python中按名称杀死java进程?
【发布时间】:2017-05-19 05:49:55
【问题描述】:

我正在尝试使用下面的 python 脚本杀死名为“MyClass”的 java 进程:

import os
os.system("kill $(ps aux | grep 'MyClass' | grep -v 'grep' | awk '{print $2}')")

但这给了我如下输出,并且进程仍在运行

sh: 1: kill: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]
512

我知道 $ 符号是这里的问题,但不知道如何使这个工作。

感谢任何帮助/提示。 谢谢。

【问题讨论】:

  • os.system("kill ps aux | grep 'MyClass' | grep -v 'grep' | awk '{print $2}')怎么样?
  • @kuro 给出错误。不过还是谢谢。
  • 可能是因为 SO 更改了评论。在高亮部分前后添加'`'

标签: python process


【解决方案1】:

这里我有另一种方式:

我正在获取所有进程,通过循环每个进程,我将获取所需的进程,如果找到就杀死它们。

我正在利用这些概念来找出有多少进程正在为同一客户端、同一类别运行。

# this will fetch the processes in stdout var
processes = Popen(['ps', '-ef'], stdout=PIPE, stderr=PIPE)
stdout, error = processes.communicate()

for line in stdout.splitlines():

    if (line.__contains__("Process_name to check")):

       pid = int(line.split(None, 1)[0])
       os.kill(pid, signal.SIGKILL)

【讨论】:

    猜你喜欢
    • 2017-10-02
    • 2011-02-25
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多