在 OSX 中,如果我输入 netstat,我可以看到某些已建立连接的东西。我不想更改任何设置来关闭它们,我只想能够关闭我在终端中选择的任何端口。你怎么做呢?
答案1
您不能像这样关闭打开的套接字。理想情况下,您只需要终止建立连接的进程即可。
检查您的连接lsof
(netstat
不会显示进程),使用您想要的连接状态过滤输出:
lsof -i
lsof -i | grep LISTEN
lsof -i | grep ESTABLISHED
或者,获取端口,例如17500
:
lsof -i:17500
然后,只需终止该进程即可。例如:
$ lsof -i | grep "Skype"
Skype 438 werner 9u IPv4 0xffffff801dd0c640 0t0 UDP localhost:52218
Skype 438 werner 42u IPv4 0xffffff80231a7a08 0t0 TCP *:29429 (LISTEN)
Skype 438 werner 43u IPv4 0xffffff8022e18a40 0t0 UDP *:29429
终止 Skype:
killall Skype
但请注意,这不会阻止建立连接 – 您必须在防火墙偏好设置中指定这一点。
答案2
也可以使用使用fuser
或netstat
命令。
fuser
语法是
fuser -k -n protocol portno
例子:
$ fuser -k -n udp 7777
7777/udp: 11774
数字 11774 是 pid。
netstat
例子:
$ sudo netstat -ap | grep :9050
tcp 0 0 localhost:9050 *:* LISTEN 1613/tor
数字 1613 是 pid,“tor”是进程名称。
获得 pid 后,使用 kill 或 killall 命令结束它
杀死进程
或者
killall -9 命令名称