我想一起打印 2 个字段,所有打开的端口和使用它的应用程序。这是我的命令,但它只打印端口号,并且仍然缺少程序字段:
netstat -lnt -u -p | awk '{print $4}' | sed 's/.*://' | sort -n | uniq
我如何修改它以打印程序名称,如“PID/程序名称”将返回“java”
“ ”的示例netstat -lnt -u -p
如下所示:
tcp 、 0 、 0 、 10.194.194.21:36195 、 0.0.0.0:* 、 监听 、 2969/java
我只想查看端口号和程序名称:
36195 java
答案1
您需要打印出第 6 个字段和第 4 个字段
这应该返回您期望的结果。 (因为我不知道命令结果,肯定会有更有效的方法。)
netstat -lnt -u -p | awk '{print $4,$6}' | sed 's/.*://' | sort -n | uniq
这是获取唯一端口和程序名称的方法(sed
不需要额外的sort
命令,可以独特的及其-u
选项):
netstat -lnt -u -p | awk -F"[,:/]" '{print $5,$NF}'| sort -un
36195 java
答案2
缩短的解决方案:
netstat -lpunt | awk -F' +|:+|/' '$5{print $5,$10}' | sort -n
-F' +|:+|/'
- 字段分隔符(空格、冒号或斜杠)$5
- 端口号$10
- 程序名称