1

我正在尝试使我一次又一次面临的一项工作自动化。有些端口有时没有被以前的工作正确关闭..

假设端口 5000,5001

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

并杀死这些端口,如果它们是开放的

所以现在,我正在做

lsof -i :5000

 kill -9 pid1
    kill -9 pid2

等等..

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

4

3 回答 3

2

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

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

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

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

./killMyPorts 5000
于 2013-02-19T19:55:00.610 回答
1

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

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

kill_port_users 5000 5001
于 2013-02-19T19:49:46.157 回答
0

你有没有尝试过

kill -9 `lsof -i :5000`

或者

kill -9 $(lsof -i :5000)
于 2013-02-19T19:57:01.717 回答