python怎麼獲取windows服務的PID

2021-07-15 05:23:23 字數 2109 閱讀 1732

下面上**,為了便於理解,特意在**後新增了注釋。希望有所幫助。

import psutil

import re

import sys

import os

import time

import logging

import subprocess

logging.basicconfig(level=logging.info,

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',

datefmt='%a, %d %b %y %h:%m:%s',

filename='pid.log',

filemode='a') #日誌配置

logging.debug('----------------------------------------------init----------------')

process_re = re.compile("pid=\d,\sname='\s'") #採用正則,獲取資料 pid=x/xx/***/***x, name=[1~20個字元,不是空格]

pidnothandle = list(psutil.process_iter()) #獲取當前計算機的pid

pid =

pidname =

foreach in pidnothandle:

a = str(each) #each 是 class型別,可用type(each)檢視型別

print(a) #資料樣式為:psutil.process(pid=0, name='system idle process')

foreach in pid:

print(each)

b = each.find("name") #獲取name的位置;name='system idle process'

c = each[b+6:-1] #獲取name值;system idle process

#print(c)

if c == "orgtomcat.exe": #目標服務名稱為:orgtomcat.exe

d = each.find("pid") #獲取物件的位置;pid=0, name='system idle process'

e = each[d+4:b-2] #獲取pid的值:0

print("pid:",e) #列印目標服務的pid

unread = os.popen('tasklist | findstr '+ e) #檢視占用該pid的有哪些服務

logging.info(unread.read())

print('read1:',unread.read())

unread2 = os.popen('taskkill /pid %s /f' % e) #殺掉該pid的服務

read2 = unread2.read()

print('read2:',read2)

time.sleep(10)

unread3 = os.popen('net start "apache tomcat 7.0 orgtomcat"') #重新啟動服務名稱為:『apache tomcat 7.0 orgtomcat』服務

print('read3:',unread3.read())

logging.info(unread3.read())

break

#for i in range(len(pid)):

#pid[pid[i].find(name)+6:]

#print()

#type(pid[-1])

#pid[-1].find('name')

#b = pid[-1]

#b.find('name')

程式執行結果圖:

cmd視窗命令執行圖:

積分怎麼獲取

積分怎麼獲取?你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣式進行展...

怎麼獲取積分

怎麼獲取積分 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣式進行展...

怎麼獲取 經驗怎麼獲取?如何快速運用

很簡單,就是因為你經驗不足,根本沒有落地過此類這樣的事情。如果說,你真正有這樣的經歷,實操經驗,你還會無法落地嗎?很顯然,絕對不會。經驗怎麼獲取?如何快速運用。首先 1,你必須明白人性2,你如果很容易通透背後的本質原理。你也可以很容易應用。當然,生活中能做到這2條的人,基本上也不會讀這本分享了。大多...