netstat我一般用:
netstat -tupln
查看端口占用情况,其中t是tcp,u是udp,p是进程pid信息,l是仅显示listen状态有关进程,n是拒绝别名,能用数字显示就用数字。
比如查看80端口:
@hp:~$ netstat -tupln | grep 80
(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN -
udp 10880 0 0.0.0.0:68 0.0.0.0:* -
没用root身份,没检测到的也就算了,检测到的也不显示进程。这样我一般是用sudo来让其显示进程信息,而不是为了检测没显示的进程,虽然我也觉得蛮奇怪:
@hp:~$ sudo netstat -tupln | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 31820/nginx: master
tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN 1059/mono
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 806/systemd-resolve
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 28880/sshd: dww@pts
tcp6 0 0 ::1:6010 :::* LISTEN 28880/sshd: dww@pts
udp 2304 0 127.0.0.53:53 0.0.0.0:* 806/systemd-resolve
udp 10880 0 0.0.0.0:68 0.0.0.0:* 1207/dhclient
加了sudo后进程名称和pid都显示正常了。