AIX系統查看某個進程占用了該端口,
1.根據端口查進程
netstat -Aan | grep LISTEN //查看主機打開的所有監聽端口
netstat -Aan | grep <portnumber> //查看指定端口的PCB/ADDR
找到該端口連接對應的 PCB/ADDR 和連接的協議類型。
注:PCB ----Protocol Control Block
2. 如果是 tcp 連接,則 rmsock <PCB/ADDR> tcpcb
如果是 udp 連接,則 rmsock <PCB/ADDR> inpcb
下面我們以 ssh 服務所使用的 22 號端口為例,說明該方法:
netstat -Aan | grep *.22
提示:
f1000e000192cbb8 tcp 0 0 *.23 *.* LISTEN
可以看到 PCB/ADDR 為 f1000e000192cbb8 ,且協議類型為 tcp 。
rmsock f1000e000192cbb8 tcpcb
提示:
The socket 0xf1000e000192c808 is being held by proccess 3932278 (sshd).
命令報告該端口正在被 sshd 進程使用, PID 為3932278 。
可進一步查看進程序的執行文件
ps -ef | grep 3932278
注:如果執行 rcmsock <PCB/ADDR> tcpcb 報以下錯誤:
usage: rmsock Addr TypeOfAddr
原因:當進程數超過1907個時會有報錯,這是個bug, 解決辦法升級系統補丁。