問題描述:aix系統發現系統起來之後再起應用總是有端口被占用,通過lsof -i:port 看不到
在系統管理過程中經常遇到的情況就是在啟動某個程序時,會提示端口被占用。如啟動WebSphere管理控制台時經常碰到9090端口被占用。用netstat -an | grep 9090 可以看到該端口正被監聽,但卻不知道是哪個程序占用了該端口,當然也可以改變端口但比較麻煩。如果能找到是哪個程序占用了該端口,把這個程序kill掉就可以了。
問題解決:
1. netstat -Aan|grep
找到該端口連接配接對應的PCB/ADDR和連接配接的協定類型。
注:PCB ----Protocol Control Block
2. 如果是tcp連接配接,則rmsock tcpcb
如果是udp連接配接,則rmsock inpcb
下面我們以telnet服務所使用的23号端口為例,說明該方法:
#netstat -Aan|grep 23
f1000200019ce398 tcp 0 0 *.23 *.* LISTEN
可以看到PCB/ADDR為f1000200019ce398,且協定類型為tcp。
#rmsock f1000200019ce398 tcpcb
The socket 0x19ce008 is being held by proccess 185006 (inetd).
指令報告該端口正在被inetd程序使用,PID為185006。
注意:rmsock指令需要root權限執行。
本文轉自 aklaus 51CTO部落格,原文連結:http://blog.51cto.com/aklaus/1768043