我需要一个小守护程序来监视当前连接到Ubuntu Server v14的打开的tcp端口。这个想法是,有很多脚本一次运行,需要尽可能接近实时的信息,我不希望他们都使用资源来做同样的事情。到目前为止我得到的是:
netstat -ln | grep LISTEN | grep tcp6 | awk {print $4} | cut -c 4-
我的想法是让它在后台守护程序中运行并更新一些可以读取的文件。如何才能提高效率呢?比较简单。 Ubuntu Server 14上的任何脚本或编译语言都可以。我不需要有关如何使守护进程如何提取端口的信息。
答案 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
全为零的端口。
如果所有进程都使用相同的语言,那么查看端口绑定的常用函数运行起来会很便宜。 (而不是中间文件的复杂性。)