可以在停止脚本后自动关闭正在使用的端口吗?

0 投票
2 回答
613 浏览
提问于 2025-04-18 11:58

我在终端里运行使用: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是什么呢?

撰写回答