周梦康 发表于 2014-03-15 3293 次浏览 标签 : Linuxnetstat

当我们在服务器上启动某个程序之后,要确认服务监听端口号是否正确,我们通常会使用netstat命令。

# netstat -h
usage: netstat [-veenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}
       netstat [-vnNcaeol] [<Socket> ...]
       netstat { [-veenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s } [delay]

        -r, --route                display routing table
        -I, --interfaces=<Iface>   display interface table for <Iface>
        -i, --interfaces           display interface table
        -g, --groups               display multicast group memberships
        -s, --statistics           display networking statistics (like SNMP)
        -M, --masquerade           display masqueraded connections

        -v, --verbose              be verbose
        -n, --numeric              don't resolve names
        --numeric-hosts            don't resolve host names
        --numeric-ports            don't resolve port names
        --numeric-users            don't resolve user names
        -N, --symbolic             resolve hardware names
        -e, --extend               display other/more information
        -p, --programs             display PID/Program name for sockets
        -c, --continuous           continuous listing

        -l, --listening            display listening server sockets
        -a, --all, --listening     display all sockets (default: connected)
        -o, --timers               display timers
        -F, --fib                  display Forwarding Information Base (default)
        -C, --cache                display routing cache instead of FIB
        -T, --notrim               stop trimming long addresses
        -Z, --context              display SELinux security context for sockets

  <Iface>: Name of interface to monitor/list.
  <Socket>={-t|--tcp} {-u|--udp} {-S|--sctp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
  <AF>=Use '-A <af>' or '--<af>'; default: inet
  List of possible address families (which support routing):
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) 
    x25 (CCITT X.25)

比如现在 java 启动了一个程序,通过ps -ef来查看pid

# ps -ef|grep hujia[2]
root      7715     1  0 Oct15 ?        02:09:05 /usr/local/jdk/bin/java -Xms8000m -Xmx8000m -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Dapp.name=hujia2 -Dapp.base=/xxx/hujia2 me.topit.site.netty.HujiaWeixinServer

严格来讲这个时候,查看该进程监听的端口可以这样判断

# netstat -lanp|awk '{if(index($7,7715) > 0){print $0}}' 
tcp        0      0 :::8082                     :::*                        LISTEN      7715/java

这样就可以确认8082是否是我们在程序里配置的端口了。

一般情况下,直接netstat -lnp|grep 7715即可,不用那么严谨。不要忘了参数n,参数n的作用是不要使用别名,直接使用数字。否则会查不到,例如:

# netstat -lap|grep 7715 
tcp        0      0 *:us-cli                    *:*                         LISTEN      7715/java
# netstat -lanp|grep 7715
tcp        0      0 :::8082                     :::*                        LISTEN      7715/java


评论列表