python windows端口检测并杀死脚本,Python杀死Windows进程,Python3 自动杀掉程序

python windows端口检测并杀死脚本,根据端口号杀死PID进程

def kill_port(port):
    """根据端口号杀死对应的进程"""
    # 根据端口号查询pid
    find_port = 'netstat -aon | findstr %s' % port
    # 执行cmd命令 返回对象
    result = os.popen(find_port)
    # 读取返回结果
    text = result.read()
    print(f'端口:{port}占用情况:')
    print(text)
    # 提取pid
    text = [i.split(' ') for i in text.split('\n') if i]
    pids = []
    for i in text:
        pid = [u for u in i if u]
        if str(port) in pid[1]:
            pids.append(pid[-1])
    pids = list(set(pids))
    # 杀死占用端口的pid
    for pid in pids:
        find_kill = 'taskkill -f -pid %s' % pid
        result = os.popen(find_kill)
        print(result.read())

根据端口号杀死程序

  • 检测端口是否被占用
    def net_is_used(self, port, ip='127.0.0.1'):
        """
        检测端口是否被占用
        :param port: 端口
        :param ip:IP地址
        :return:
        """
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            s.connect((ip, port))
            s.shutdown(2)
            # print(f'sorry, {ip}:{port} 端口已被占用!')
            return True
        except Exception as e:
            # print(f'{ip}:{port}端口未启用!')
            print(e)
            return False

根据端口占用情况启动对应程序

    def switch_appium(self):
        """启动Appium服务"""
        print('杀死Appium服务')
        node = 'taskkill /F /IM node.exe'
        cmd = 'taskkill /F /IM cmd.exe'
        os.system(node)
        os.system(cmd)
        print('启动Appium服务')
        os.system('appium_server.bat')
        time.sleep(5)
        if not self.net_is_used(4723):
            print('Appium服务启动失败!')
            os._exit(0)
        print('Appium服务启动成功!')

根据端口号杀死对应程序

    def kill(self):
        """
        根据端口找到PID:netstat -aon|findstr "443"
        根据PID找到程序名:tasklist|findstr "12380"
        杀死进程   # /F 强制终止进程, /T 终止指定的进程和由它启用的子进程, /IM 指定要终止的进程的映像名称
        """
        node = 'taskkill /F /IM node.exe'
        mitmdump = 'taskkill /F /IM mitmdump.exe'
        cmd = 'taskkill /F /IM cmd.exe'
        os.system(node)  # 杀死appium进程
        os.system(mitmdump)  # 杀死mitmdump进程
        os.system(cmd)  # 关闭命令行窗口

根据程序查询pid

def get_pid(pname):
    """
    根据程序名查询pid
    :param pname: 程序名(python.exe)
    :return: pid列表
    """
    pids = []
    for proc in psutil.process_iter():
        print(proc)  # pid 程序名 程序开启时间
        # print('pid-%d,name:%s' % (proc.pid, proc.name()))
        if proc.name() == pname:
            pids.append(proc.pid)
            continue
    return pids

百度网盘下载链接

链接:端口号检测并杀死.exe
https://pan.baidu.com/s/1a_4AP8aKxBHSNJPBP1sZ4A
提取码:l1a8

参考 https://blog.csdn.net/qq_38154948/article/details/104538945?ops_

Python杀死Windows进程

①批量杀死同一个进程:

cmd = 'taskkill /F /IM ' + 进程名称
os.system(cmd)
1
2
②通过PID杀死某一个进程:

cmd = 'taskkill /f /pid ' + PID值
os.system(cmd)
1
2

①查询所有PID:

list_process = list()
pid_list = psutil.pids()
for sub_pid in pid_list:
    try:
        process_info = psutil.Process(sub_pid)
        if 进程名称 == process_info.name():
            list_process.append(sub_pid)
    except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
        pass

————————————————
版权声明:本文为CSDN博主「youyicc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/youyicc/article/details/120525544

Python3 自动杀掉程序

kill-program-name.py
1.根据程序名

#!/user/bin/env python3
# -*- coding: utf-8 -*-
import os, signal, sys
import argparse


def kill(pid):
    print('pid', pid)
    os.kill(pid, signal.SIGKILL)
    print('已杀死pid为%s' % pid)


def kill_target(target):
    cmd_run = "ps aux | grep {}".format(target)
    out = os.popen(cmd_run).read()
    for line in out.splitlines():
        print(line)
        # 程序名或程序路径
        if resource_path(target) in line:
            pid = int(line.split()[1])
            kill(pid)


# 获取根目录 测试在UBuntu上不需要根目录
def resource_path(file_name):
    dir_name = os.path.split(os.path.abspath(sys.argv[0]))[0]
    return dir_name + "/" + str(file_name)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='program to kill')
    parser.add_argument(
        '--name', help='program name', type=str, required=True)
    args = parser.parse_args()
    kill_target(args.name)

使用方式

 python3 kill-program-name.py --name 程序名

2.根据端口
kill-port.py

#!/user/bin/env python3
# -*- coding: utf-8 -*-
import os, signal
import argparse
import time


def kill_port(target):
    cmd_run = 'lsof -i tcp:{}'.format(target)
    os.system(cmd_run)
    out = os.popen(cmd_run).read()
    for line in out.splitlines():
        print(line)
        if 'IPv4' in line or 'IPv6' in line:
            pid = str(line.split()[1])  # 得到pid
            print('pid=' + pid)
            time.sleep(3)
            os.system('kill -9 %s' % pid)
            out = os.popen(cmd_run).read()
            if out != "":
                print('kill 完成')


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='occupant port to kill')
    parser.add_argument(
        '--port', help='port number', type=str, required=True)
    args = parser.parse_args()
    kill_port(args.port)

使用方式

python3 kill-port.py --port 8888

参考:Python 用一个脚本来控制另一个脚本的运行、关闭

参考 https://blog.csdn.net/qq_27694835/article/details/110301255?spm=

python杀掉某个指定的进程

psutil模块
psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。
使用pustil库之前,需要先安装,安装命令如下:

pip install psutil
1
进程信息
————————

pids = psutil.pids()
for pid in pids:
    p = psutil.Process(pid)
    # get process name according to pid
    process_name = p.name()
    
    print("Process name is: %s, pid is: %s" %(process_name, pid))

可以查看的进程信息:

p.name()   #进程名
p.exe()    #进程的bin路径
p.cwd()    #进程的工作目录绝对路径
p.status()   #进程状态
p.create_time()  #进程创建时间
p.uids()    #进程uid信息
p.gids()    #进程的gid信息
p.cpu_times()   #进程的cpu时间信息,包括user,system两个cpu信息
p.cpu_affinity()  #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好
p.memory_percent()  #进程内存利用率
p.memory_info()    #进程内存rss,vms信息
p.io_counters()    #进程的IO信息,包括读写IO数字及参数
p.connections()   #返回进程对象的列表
p.num_threads()  #进程开启的线程数p.username()  #执行用户的名

杀掉指定进程

linux系统

import signal

pids = psutil.pids()
for pid in pids:
    p = psutil.Process(pid)
    # get process name according to pid
    process_name = p.name()
    # kill process "sleep_test1"
    if 'sleep_test1' == process_name:
        print("kill specific process: name(%s)-pid(%s)" %(process_name, pid))
        os.kill(pid, signal.SIGKILL)  
    
exit(0)
分析原因:os.kill()是linux系统杀死进程的方法,对于windows系统并不适用

windows系统
#根据进程名杀死进程
pro = 'taskill /f /im %s'% process_name
os.system(pro)
#根据pid杀死进程
process = 'taskill /f /pid %s'%pid
os.system(process)

相关文献
【Python】 系统配置/进程等信息查看 psutil
如何用python查看进程
————————————————
版权声明:本文为CSDN博主「haimianjie2012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/haimianjie2012/article/details/121837757

您可能还喜欢...

发表回复