簡體   English   中英

如何在 python 中按名稱殺死 java 進程?

[英]How to kill a java process by name in python?

我正在嘗試使用下面的 python 腳本殺死名為“MyClass”的 java 進程:

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

但這給了我 output 如下,並且進程仍在運行

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

我知道 $ 符號是這里的問題,但不知道如何使這項工作。

任何幫助/提示表示贊賞。 謝謝。

在這里,我有另一種方式:

我正在獲取所有進程,通過循環每個進程來獲取所需的進程,如果找到了,則將其殺死。

我正在利用這些概念來找出針對同一類別的同一客戶端正在運行多少個進程。

# 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)
def terminate_java_process(process_name):
    proc = subprocess.Popen(["jps"], stdout=subprocess.PIPE, shell=True)
    (out, err) = proc.communicate()
    processes = {}
    for line in out.split(b"\n"):
        try:
            process_name=str(line, 'utf-8').split(' ')[1]
        except:
            continue
        process_id= str(line, 'utf-8').split(' ')[0]
        processes[process_name] = process_id
    
    os.system("kill -s TERM 82220")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM