我总是想杀死一个监听端口 3000 的进程。所以目前我正在使用,
1.lsof -i tcp:3000
将输出如下内容
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
我将使用2来终止 PID 。kill -9 6697
我想创建一个可以自动执行此过程的 bash 程序。
我尝试使用 xargs 来获取第一个命令输出的 PID,但是失败了。
答案1
首先,您需要-t
lsof 选项,它仅发出 pid。您也可以为 kill 提供 pid 列表,因此:
kill -9 $(lsof -ti tcp:3000)
如果你经常这样做,可以创建一个别名
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
答案2
下面是(没有xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done