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

背景

最近遇到一个问题,就是我去绑定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]

$ gcc -g pthread_setname.c -lpthread
$ ./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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值