Answers:
打开您的终端并输入
lsof -i :8000
该命令将列出您该端口使用PID的应用程序。(如果没有结果通过,sudo
因为您可能没有权限访问某些进程。)
例如,使用端口8000(python3 -m http.server
):
$ lsof -i :8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 3269 user 3u IPv4 1783216 0t0 TCP *:8000 (LISTEN)
和端口22(SSH):
$ sudo lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 998 root 3u IPv4 1442116 0t0 TCP *:ssh (LISTEN)
sshd 998 root 4u IPv6 1442118 0t0 TCP *:ssh (LISTEN)
希望能有所帮助。
-s TCP:LISTEN
将结果限制为实际的侦听套接字及其过程。
PID 1889
?笏
您可以使用netstat查看哪个进程正在侦听哪个端口。
您可以使用此命令来获取完整的详细信息:
sudo netstat -peanut
如果您需要确切地知道哪个正在监听8000端口,则可以使用以下命令:
sudo netstat -peanut | grep ":8000 "
没有可以从netstat隐藏的进程。
netstat -peanut
比起记忆更容易netstat -taupen
!
要通过@ 33833阐明答案,您可以获取一些非常详细的信息,例如:
$ lsof -i :8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
squid3 1289 proxy 15u IPv6 14810490 0t0 TCP *:8000 (LISTEN)
$ ps -fp 1289
UID PID PPID C STIME TTY TIME CMD
proxy 1289 1 0 09:48 ? 00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf
我在那里可以看到鱿鱼是一个过程,但实际上是我squid-deb-proxy
占据了港口。
Java应用程序的另一个好例子:
$ lsof -i :4242
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 3075 root 86u IPv4 12019 0t0 TCP *:4242 (LISTEN)
$ ps -fp 3075
UID PID PPID C STIME TTY TIME CMD
root 3075 1 15 May24 ? 3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl
您可以在lsof
(LiSt打开文件)中看到它是Java,这没有什么用。ps
使用PID 运行命令,我们可以立即看到它是CrashPlan。
lsof -t -i :8000 | xargs ps -fp
sudo
但之后对我有用。谢谢。
sudo
错误就不会得到任何回应。
使用socklist
from procinfo
包的另一种方式:
description
socklist
是一个Perl脚本,它为您提供所有打开的套接字的列表,枚举类型,端口,inode,uid,uid,pid,fd及其所属的程序。
sudo socklist
type port inode uid pid fd name
tcp 53 28749 0 1721 5 dnsmasq
tcp 631 29190 0 2433 11 cupsd
tcp 42376 82230 1000 1345 84 firefox
tcp 49048 71686 1000 1345 67 firefox
tcp 41248 81672 1000 1345 119 firefox
tcp 54676 84558 1000 1345 73 firefox
udp 56107 66258 0 3268 20 dhclient
udp 40804 17857 107 679 14 avahi-daemon
udp 53 28748 0 1721 4 dnsmasq
udp 68 67427 0 3268 6 dhclient
udp 631 19692 0 765 8 cups-browsed
udp 5353 17855 107 679 12 avahi-daemon
您可以使用nmap。
知道您的PC中打开了哪些端口非常重要,这不仅对Linux有用,对于其他操作系统也是如此。Linux有很多工具可以检查哪些端口是打开的,最常见的是nmap,这是一个命令行工具,但如果您愿意,也可以使用它的图形前端。1个
要安装它,只需按键盘上的Ctrl+ Alt+ T打开终端。打开时,运行以下命令:
sudo apt-get install nmap
有关nmap和其他实用程序的更多信息,请转到此处
1资料来源: garron.me
[nmap] tries to guess which service is listening on each port, but it can make mistakes
然后才建议使用一种实际的方法来找出哪个进程拥有套接字。