【问题标题】:Is it possible to automatically close a port in use after I stop running the script?停止运行脚本后是否可以自动关闭正在使用的端口?
【发布时间】:2014-07-03 08:18:24
【问题描述】:

我正在使用 :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

有没有办法让我不必每次都运行这个程序?

【问题讨论】:

  • 你可以考虑注册一个atexit函数来在你的程序终止时关闭端口。

标签: python linux macos terminal


【解决方案1】:

您的脚本似乎没有按应有的方式终止。为什么不编写一个 PID 文件来限制实例,然后在您的脚本已经使用 PID 运行时出现错误而退出?

【讨论】:

    【解决方案2】:

    你可以使用 kill 和 netstat 命令的组合来杀死使用端口 5000 运行的进程

    kill -9 `netstat -lnp|grep :5000|awk '{ print $7}'|awk -F/ '{ print $1 }'`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多