如何在linux中只获取进程的监听端口

时间:2015-03-14 05:32:12

标签: java linux

我尝试了不同的命令netstatlsof,但我的要求是, 我想传递监听端口,说明进程x正在chl21000303.sesson.net上运行: 32456。

我想要一个linux命令,它只读取端口32456,并希望在java中传递它,如java -jar runs.jar port。

所以我需要一些命令才能获得正在运行的端口或侦听端口。如果我尝试这样的netstat命令,我会说大约20行端口。

2 个答案:

答案 0 :(得分:0)

netstat | awk '{print $4}' | sed -nr 's/.*:([0-9]+)/\1/p' | xargs java -jar runs.jar

我对这个问题有点不清楚。上面会将所有端口号插入java文件的参数

如果您确定它将在chl21000303.sesson.net上,您可以改为

netstat | awk '{print $4}' | sed -nr 's/chl21000303.sesson.net:([0-9]+)/\1/p' | xargs java -jar runs.jar

编辑 -

为了完成,我会快速概述一切正在做什么。

netstat获取所有连接并将其传递给awk。 awk获得第4列并将其管道输入sed。 sed使用正则表达式获取端口号,并将其作为参数传递给您的java程序

答案 1 :(得分:0)

您可以在shell脚本中执行此操作

var=`"netstat -atn | grep LISTEN | awk {print $4}"`
for x in $var
do
    port=`echo $x | awk -F':' '{print $2}'`;
    echo $port;
done

您在$ port中有端口号,可以将其传递给您的java脚本