Answers:
的-p
标志netstat
为您提供过程的PID:
netstat -l -p
编辑:在FreeBSD中获取套接字用户的PID所需的命令是sockstat
。正如我们在与@Cyclone进行讨论期间所得出的那样,执行此操作的行是:
sockstat -4 -l | grep :80 | awk '{print $3}' | head -1
netstat -nlp | grep :80
代替
netstat: option requires an argument -- p
netstat
称为Windows native 。它具有其他语法。
可以传递给kill命令的简短版本:
lsof -i:80 -t
lsof -i4TCP:80 -sTCP:LISTEN -t
可能正是您想要的。
kill -9 `lsof -i:80 -t`
为了便于复制
netstat -p -l | grep $PORT
和lsof -i :$PORT
解决方案都不错,但我更喜欢fuser $PORT/tcp
使用POSIX扩展语法(适用于coreutils
),就像使用管道一样:
pid=`fuser $PORT/tcp`
它会打印纯pid,因此您可以放弃sed
魔术。
使fuser
我的爱好者工具产生影响的一件事是能够直接向该进程发送信号(此语法也是POSIX的扩展):
$ fuser -k $port/tcp # with SIGKILL
$ fuser -k -15 $port/tcp # with SIGTERM
$ fuser -k -TERM $port/tcp # with SIGTERM
FreeBSD也支持-k:http ://www.freebsd.org/cgi/man.cgi?query=fuser
netstat -nlp
应该告诉您PID在哪个端口上监听。
netstat: 80: unknown or uninstrumented protocol
使用80
(nginx)端口测试目的。没用。
我想以编程方式(仅使用Bash)杀死在给定端口上侦听的进程。
假设端口为8089,那么这就是我的操作方法:
badPid=$(netstat --listening --program --numeric --tcp | grep "::8089" | awk '{print $7}' | awk -F/ '{print $1}' | head -1)
kill -9 $badPid
我希望这可以帮助其他人!我知道这会对我的团队有所帮助。
function kill-listener { lsof -i:$1 -t | xargs kill -9 }
以您的端口8089为例:kill-listener 8089
netstat: 80: unknown or uninstrumented protocol
使用80
(nginx)端口测试目的。没用。