[英]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.