yan*_*sal 455 networking webserver sockets
我怀疑某个程序正在侦听8000我机器上的端口。
当我运行以下命令时,出现此错误:
> python -m SimpleHTTPServer
# Lots of python error
socket.error: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)
如果我使用另一个端口(8000是默认端口),则 Web 服务器运行良好。
如果我从命令行运行wget localhost:8000,它会返回404 Not Found.
我可以做什么(或有哪些工具可用)来查找正在侦听端口的程序8000,以及该程序的配置位置?
rɑː*_*dʒɑ 427
打开你的终端并输入
lsof -i :8000
Run Code Online (Sandbox Code Playgroud)
该命令将使用 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)
Run Code Online (Sandbox Code Playgroud)
和端口 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)
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
Ant*_*uez 422
您可以使用 netstat 查看哪个进程正在侦听哪个端口。
您可以使用此命令获得完整的详细信息:
sudo netstat -peanut
Run Code Online (Sandbox Code Playgroud)
如果您需要确切知道哪个正在监听端口 8000,您可以使用以下命令:
sudo netstat -peanut | grep ":8000 "
Run Code Online (Sandbox Code Playgroud)
没有可以从 netstat 隐藏的进程。
小智 177
要详细说明@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
Run Code Online (Sandbox Code Playgroud)
我可以在那里看到鱿鱼是过程,但实际上是我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
Run Code Online (Sandbox Code Playgroud)
您可以在lsof(LiSt Open Files) 中看到它是 java,这没什么帮助。ps使用 PID运行命令,我们可以立即看到它是 CrashPlan。
小智 14
ss -nlp | grep 8000
Run Code Online (Sandbox Code Playgroud)
由于社区的低点,我无法在这里发表评论。如果没有sudo上述所有命令,将不会为您提供进程 ID/程序名称。
因此,您需要输入以下内容:
sudo lsof -i :8000
Run Code Online (Sandbox Code Playgroud)
或者
sudo netstat -lntup
Run Code Online (Sandbox Code Playgroud)
您可以通过 或我最喜欢的助手检查这些man命令详细help信息
使用socklistfromprocinfo包的另一种方法:
描述
socklist是一个 Perl 脚本,它为您提供所有打开的套接字、枚举类型、端口、inode、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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
790023 次 |
| 最近记录: |