我尝试了不同的命令netstat
,lsof
,但我的要求是,
我想传递监听端口,说明进程x正在chl21000303.sesson.net上运行: 32456。
我想要一个linux命令,它只读取端口32456,并希望在java中传递它,如java -jar runs.jar port。
所以我需要一些命令才能获得正在运行的端口或侦听端口。如果我尝试这样的netstat命令,我会说大约20行端口。
答案 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脚本