获取pid

squid2pid=`ps -ef |grep squid2 | grep -v grep | awk '{print $2}'`
squid2pid=`lsof -n -P -i:82|awk '{print $2}'|grep -v PID`

 

======================

http://blog.ailms.me/2014/05/25/find-listen-port-by-pid-without-with-lsof-or-ss-or-netstat.html

如何根据 pid 找到该进程打开的端口 (不使用 lsof、ss、netstat)

short answer :通过 /proc/net/tcp 和 /proc/net/udp 即可


# 找到 pid

 


# 找到所有相关的 socket 和 indoe ([]里面的数值)

 


 

# 提出 inode


# 查找 /proc/net/tcp,udp (假设不关心 unix socket),查到匹配的 inode 的行,并提取其中的 local-addr:local-port 部分

 

# 这里不是很严谨,egrep 不是很合适,应该是用 awk 逐个比较 $2 是否相等
 

# 最后翻译为ip:port

 


综合起来脚本是 (没有区分是 tcp 还是 udp ,如果要区分,分开2次 for 循环即可)

 


 

 

文章导航

posted @ 2014-11-10 09:37  陳聽溪  阅读(295)  评论(0)    收藏  举报