【问题标题】:Close many ports at once一次关闭多个端口
【发布时间】:2016-11-20 09:20:11
【问题描述】:

当我想杀死给定端口上的进程时(比如说8000),我正在使用命令:

kill -9 `lsof -i :8000`

有没有办法一次关闭多个端口?我必须杀死端口8000-9000 上的进程,而手动执行此操作效率非常低。

【问题讨论】:

  • 您熟悉 bash 脚本吗?如果您创建上述脚本,将端口范围作为输入参数,并稍微操作上面的行,以使用您的输入参数,您就回家了 :)
  • @mattias 我知道的不多,但如果你知道任何教程,我很乐意学习!
  • 您的命令是否正常工作?你用什么 OS X 版本?

标签: macos terminal kill


【解决方案1】:

好的,首先尝试为您提供一个工作脚本。

#!/bin/bash
for i in {8000..9000}
do
   kill -kill `lsof -t -i tcp:$i`
done

将以上内容放入一个 .sh 文件 myportrangekiller.sh 并使其可执行,chmod +x myportrangekiller.sh 并从您的终端使用 $ ./myportrangekiller.sh 运行它。 这将遍历端口 8000-9000 并终止这些进程。

我很难验证它是否有效,因为我在 OS X El Capitan 中运行您的命令时得到以下信息,

kill: 用法:kill [-s sigspec | -n 符号 | -sigspec] pid |工作规范 ... 或 kill -l [sigspec]

顺便说一句,我稍微改变了你的命令,从 lostlost,有点假设你拼错了该二进制文件的名称。

【讨论】:

  • 我认为您可能不想创建和运行一千个lsof 进程,您最好使用lsof -t -i tcp:8000-9000 的一系列端口
  • 那么它只是一个单行代码,不需要我尝试循环遍历 OP 的初始命令。 @Ziva,你能验证上述评论是否有效吗?
猜你喜欢
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
相关资源
最近更新 更多