使用python根据端口号关闭进程

Updated on with 89 views and 0 comments

我们知道,做web开发,在调试时需要反复启动整个工程,那么上一个工程占用的端口,在下一次工程启动时就不能用了,因为占用的端口没有释放,但是手动关闭方法是:

lsof -i:12345

得到pid后再kill -9 pid

十分麻烦,所以能否在启动python的web工程时顺便把上一次占用的端口给关闭了呢?

当然是有的,下面以flask为例

#-*- encoding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import os
from flask import Flask  
  
#生成该类的一个实例  
app = Flask(__name__)  
  
#调用app的路由方法  
@app.route('/')  
def hello_world():  
    return '<h1> Hello World!</h1>'  
def killport(port):
	command='''kill -9 $(netstat -nlp | grep :'''+str(port)+''' | awk '{print $7}' | awk -F"/" '{ print $1 }')'''
	os.system(command) 
#开始执行  
if __name__ == '__main__':  
    #打开调试窗口  
    app.debug = True;   
    #run可以指定host参数,指定ip,0.0.0.0表示全网段  
    #app.run()  
    port=12345
    killport(port)
    app.run(host='0.0.0.0',port=port);  
 
#测试方式:curl -i 127.0.0.1:12345/
说你懂得生之微末,我便做了这壮大与你看,你说再热闹也终需离散,我便做了这一辈子与你看,你说冷暖自知,我便做了这冬花夏雪与你看,你说恋恋旧日好时光,我便做了这描金绣凤的浮世绘与你看。你说应愁高处不胜寒,我便拱手河山,讨你欢。