lsof在WPAR里不能使用,所以要想知道WPAR里端口对应的进程是个问题。今天研究了下这个问题,发现不必在WPAR里运行lsof,在GLOBAL环境下运行lsof完全可以知道某个WPAR里所有端口对应的进程名、进程ID。
方法如下:
WPAR=XXXX
for i in `ps -e@ | awk -v wpar=$WPAR '$1==wpar {print $2}'`;do
lsof -nPp $i 2>/dev/null| grep LIS
done
示例:
WPAR里可以看到
# hostname; netstat -an | grep LIS
wpar4
tcp4 0 0 *.13 *.* LISTEN
tcp 0 0 *.21 *.* LISTEN
tcp 0 0 *.23 *.* LISTEN
tcp4 0 0 *.25 *.* LISTEN
tcp4 0 0 *.37 *.* LISTEN
tcp4 0 0 *.111 *.* LISTEN
tcp 0 0 *.512 *.* LISTEN
tcp 0 0 *.513 *.* LISTEN
tcp 0 0 *.514 *.* LISTEN
tcp 0 0 *.657 *.* LISTEN
tcp4 0 0 *.1334 *.* LISTEN
tcp4 0 0 *.33465 *.* LISTEN
tcp4 0 0 *.33466 *.* LISTEN
tcp4 0 9 99.1.73.216.23 99.1.70.94.4540 ESTABLISHED
# lsof
lsof: can't open /dev/mem: No such file or directory
lsof: can't open /dev/kmem: No such file or directory
#
GLOBAL环境里可以看到
# lswpar
Name State Type Hostname Directory
----------------------------------------------
mywpar A S mywpar /wpars/mywpar
wpar2 A S wpar2 /wpars/wpar2
wpar3 A S wpar3 /wpars/wpar3
wpar4 A S wpar4 /wpars/wpar4
# WPAR=wpar4
# for i in `ps -e@ | awk -v wpar=$WPAR '$1==wpar {print $2}'`;do
> lsof -nPp $i 2>/dev/null| grep LIS
> done
inetd 229482 root 4u IPv6 0xf1000700011583b0 0t0 TCP *:21 (LISTEN)
inetd 229482 root 5u IPv6 0xf100070001158bb0 0t0 TCP *:23 (LISTEN)
inetd 229482 root 6u IPv6 0xf1000700011573b0 0t0 TCP *:514 (LISTEN)
inetd 229482 root 7u IPv6 0xf100070001157bb0 0t0 TCP *:513 (LISTEN)
inetd 229482 root 8u IPv6 0xf1000700011563b0 0t0 TCP *:512 (LISTEN)
inetd 229482 root 10u IPv4 0xf100070001156bb0 0t0 TCP *:13 (LISTEN)
inetd 229482 root 11u IPv4 0xf1000700011553b0 0t0 TCP *:37 (LISTEN)
telnetd 245778 root 0u IPv6 0xf10007000c4b13b0 0t99 TCP 99.1.73.216:23->99.1.70.94:4540 (ESTABLISHED)
telnetd 245778 root 1u IPv6 0xf10007000c4b13b0 0t99 TCP 99.1.73.216:23->99.1.70.94:4540 (ESTABLISHED)
telnetd 245778 root 2u IPv6 0xf10007000c4b13b0 0t99 TCP 99.1.73.216:23->99.1.70.94:4540 (ESTABLISHED)
sendmail 111064 root 5u IPv4 0xf1000700004173b0 0t0 TCP *:25 (LISTEN)
rmcd 180552 root 13u IPv6 0xf100070008ffe3b0 0t0 TCP *:657 (LISTEN)
writesrv 90656 root 3u IPv4 0xf10007000656d3b0 0t0 TCP *:1334 (LISTEN)
#
收起