查询网络端口被哪个进程/线程占用

背景

最近遇到一个问题,就是我去绑定8080端口时,发现errno是93(记不清了),表示已经被人用了,于是想去查是哪个进程或者线程。当然我也搜了代码,发现很多以网址的形式出现,还是从linux 系统去看吧。

标准的netstat -pt是可以把进程名显示出来的,但是android版的没有这个选项。

local_port to process_name

$ cat /proc/net/{tcp,udp,unix,raw}

sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode

0: 0100007F:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 11207 1 0000000000000000 100 0 0 10 0

num = sscanf(line,

“%*d: %32[0-9A-Fa-f]:%X ”

“%32[0-9A-Fa-f]:%X %X ”

“%lX:%lX %*X:%*X ”

“%*X %d %*d %lu “,

local_addr, &param->local_port,

rem_addr, &param->rem_port, &param->state,

&param->txq, &param->rxq,

&param->uid, &param->inode);

local_port = 0x19; inode = 11207;

$ cat /proc/net/unix | grep 136

0000000000000000: 00000003 00000000 00000000 0001 03 13693

0000000000000000: 00000003 00000000 00000000 0001 03 13614

0000000000000000: 00000002 00000000 00000000 0002 01 13692

0000000000000000: 00000002 00000000 00000000 0002 01 13636

for pid = 1860:

$ ls -li /proc/1860/fd/

15271 lrwx—— 1 root root 64 3月 14 22:54 0 -> /dev/null

15272 lrwx—— 1 root root 64 3月 14 22:54 1 -> /dev/null

15273 lrwx—— 1 root root 64 3月 14 22:54 2 -> /dev/null

15274 lrwx—— 1 root root 64 3月 14 22:54 3 -> socket:[13692]

15275 lrwx—— 1 root root 64 3月 14 22:54 4 -> socket:[13693]

15276 lrwx—— 1 root root 64 3月 14 22:54 5 -> anon_inode:[eventfd]

15277 lrwx—— 1 root root 64 3月 14 22:54 6 -> anon_inode:[eventfd]

inode = readlink(i) = {13692,13693}

$ cat /proc/1860/cmdline

/usr/lib/rtkit/rtkit-daemon #name

proc_name to thread_name

需要代码里面调了pthread_setname_np[1]

$ ./a.out
Created a thread. Default name is: a.out
^Z
[1]+  已停止               ./a.out
H 显示线程 -C ‘a.out bash ps‘ 选择进程名列表
$ ps H -C a.out -o ‘pid tid cmd comm‘
  PID   TID CMD                         COMMAND
 3437  3437 ./a.out                     a.out
 3437  3438 ./a.out                     THREADFOO
$ cat /proc/3437/task/3437/comm
a.out
$ cat /proc/3437/task/3438/comm
THREADFOO

然后把上面的用C或shell串起来就可以了。

[1] http://linux.die.net/man/3/pthread_setname_np

时间: 2024-11-06 21:11:15

查询网络端口被哪个进程/线程占用的相关文章

Mac OS/Linux命令查询网络端口占用情况

netstat命令 netstat -an | grep 3306 3306替换成需要grep的端口号 lsof命令 通过list open file命令可以查看到当前打开文件,在linux中所有事物都是以文件形式存在,包括网络连接及硬件设备. lsof -i:80 -i参数表示网络链接,:80指明端口号,该命令会同时列出PID,方便kill

查看网络端口被占用情况netstat命令

在windows命令行窗口下执行: C:\>netstat -aon|findstr "80" TCP     127.0.0.1:80         0.0.0.0:0               LISTENING       2448 看到了吗,端口被进程号为2448的进程占用,继续执行下面命令: C:\>tasklist|findstr "2448" thread.exe                     2016 Console    

Windows查看端口被哪个进程占用

命令 查看PID: netstat -ano|findstr 端口号 查看进程名称: tasklist|findstr PID 结束进程: taskkill -F -PID PID号 配图详解: 1.打开命令窗口 2.输入netstat -ano|findstr 端口号,查询占用端口的进程PID,如下图,这里的PID是7832 3.输入tasklist|findstr PID查询进程名称,如下图,进程的名称是phpd.exe 4.也可以通过打开任务管理器查看PID对应的进程,如下图 5.如果PI

iOS - Mac 下查看网络端口占用情况

1.Mac 下查看网络端口占用情况 有的时候关闭了服务器,但是端口还是占用,解决的方法是 kill 掉占用该端口的进程. # 查看 8009 端口的占用情况 $ lsof -i:8009 可以看到,该端口被 id 为 4215 的进程所占用,这个时候直接在命令行输入以下命令该进程就会被中止,端口成功释放出来. # 中止进程 4215 $ kill 4215 原文地址:https://www.cnblogs.com/QianChia/p/8531569.html

DOS命令_查询某个端口的占用情况并释放

>netstat -aon | findstr "80″Proto   Local Address           Foreign Address         State             PID====   ============       ==============   ==========   ======TCP     0.0.0.0:80                     0.0.0.0:0                 LISTENING      

Windows - 杀死占用某个端口号的进程

Windows不像Linux,Unix那样,ps -ef 查出端口和进程号,然后根据进程号直接kill进程. Windows根据端口号杀死进程要分三步: 第一步 根据 端口号 寻找 进程号 C:\>netstat -aon|findstr "9050" TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING 2056 看到了吗,端口被进程号为2056的进程占用,继续执行下面命令: 第二步 根据 进程号 寻找 进程名称 C:\>tasklist|find

linux如何查看端口被哪个进程占用的方法

linux如何查看端口被哪个进程占用的方法: 1.lsof -i:端口号2.netstat -tunlp|grep 端口号 都可以查看指定端口被哪个进程占用的情况[步骤一]lsof -ilsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具.以root用户来执行lsof -i命令,[步骤二]lsof -i:端口号lsof -i:端口号,用于查看某一端口的占用情况,比如查看22号端口使用情况,lsof -i:22[步骤三]netsta

linux如何查看端口被哪个进程占用?

http://jingyan.baidu.com/article/546ae1853947b71149f28cb7.html 1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 都可以查看指定端口被哪个进程占用的情况 工具/原料 linux,windows xshell 方法/步骤 [步骤一]lsof -i lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具.以root用户来执行lsof -i命令,如

C#网络编程基础之进程和线程详解

在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下. 一:概念 首先我们要知道什么是"进程",什么是"线程",好,查一下baike. 进程:是一个具有一定独立功能的程序关于某个数据集合的一次活动.它是操作系统动态执行的基本单元, 在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 线程:是"进程"中某个单一顺序的控制流. 关于这两个概念,大家稍微有个印象就行了,防止以后被面试官问到. 二:进程