可以在停止脚本后自动关闭正在使用的端口吗?
我在终端里运行使用:5000端口的Python脚本。
每次我停止脚本,做一些修改然后重新运行时,都会出现errno:48端口被占用的错误。然后我就得手动找到被占用的端口,再杀掉那个进程的PID,才能再次运行脚本:
dpadmins-MacBook:microblog presentation$ ps -fa
UID PID PPID C STIME TTY TIME CMD
0 326 324 0 8:48am ttys000 0:00.03 login -pf presentation
502 330 326 0 8:48am ttys000 0:00.10 -bash
502 854 330 0 9:37am ttys000 0:00.05 python
502 885 330 0 9:53am ttys000 0:00.21 flask/bin/python ./run.py
502 886 885 0 9:53am ttys000 0:01.22 /Users/presentation/Documents/webprojects/mainflask/microblog/flask/bin/python ./run.py
0 930 330 0 10:08am ttys000 0:00.01 ps -fa
dpadmins-MacBook:microblog presentation$ kill -9 885
有没有什么办法可以避免每次都要这样操作呢?
2 个回答
0
你可以结合使用kill和netstat这两个命令来结束正在使用5000端口的进程。
kill -9 `netstat -lnp|grep :5000|awk '{ print $7}'|awk -F/ '{ print $1 }'`
1
看起来你的脚本没有按预期结束。为什么不写一个PID文件,这样可以限制脚本的运行实例,然后在发现脚本已经在运行时,给出一个错误提示,告诉你脚本的PID是什么呢?