更有效的方式来获得使用的Linux端口

时间:2015-09-15 14:47:12

标签: linux bash networking

我需要一个小守护程序来监视当前连接到Ubuntu Server v14的打开的tcp端口。这个想法是,有很多脚本一次运行,需要尽可能接近实时的信息,我不希望他们都使用资源来做同样的事情。到目前为止我得到的是:

netstat -ln | grep LISTEN | grep tcp6 | awk {print $4} | cut -c 4-

我的想法是让它在后台守护程序中运行并更新一些可以读取的文件。如何才能提高效率呢?比较简单。 Ubuntu Server 14上的任何脚本或编译语言都可以。我不需要有关如何使守护进程如何提取端口的信息。

1 个答案:

答案 0 :(得分:2)

您需要的只是一个文件,您不需要执行netstat:

$ cat /proc/net/tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                                                     
   0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 5434440 1 0000000000000000 100 0 0 10 0                   
   1: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 151286810 1 0000000000000000 100 0 0 10 0
   ...

地址和端口以十六进制表示。侦听端口是rem_address全为零的端口。

如果所有进程都使用相同的语言,那么查看端口绑定的常用函数运行起来会很便宜。 (而不是中间文件的复杂性。)