关闭从shell保存给定端口的所有进程

时间:2013-02-19 19:46:49

标签: bash

我正在尝试自动化我一次又一次面临的工作之一。 有些端口有时未被某些先前的工作正确关闭..

让我们说端口5000,5001

我想做的是查看这些端口是否已打开

并在这些端口打开时终止这些端口

现在,我正在做

lsof -i :5000

 kill -9 pid1
    kill -9 pid2

依旧......

有没有办法将5000和5001作为参数传递并自动执行此过程

3 个答案:

答案 0 :(得分:2)

如果您想在使用它时自动执行此操作,请执行以下操作。

创建一个bash脚本,例如将其称为'killMyPorts'并添加以下内容:

#!/bin/bash
kill -9 `lsof -i :"${1}" | awk '{if (NR!=1) {print $2}}'`

一旦你使脚本可执行(chmod u + x),就可以按如下方式执行:

./killMyPorts 5000

答案 1 :(得分:1)

fuser可以为你完成这项工作。

kill_port_users() {
  for port; do
    fuser -n tcp -k "$port"
  done
}

kill_port_users 5000 5001

答案 2 :(得分:0)

你试过吗

kill -9 `lsof -i :5000`

kill -9 $(lsof -i :5000)