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
参考 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