繁体   English   中英

如何在Linux中仅获取进程的侦听端口

[英]how to get only listening ports of a process in linux

我尝试了不同的命令netstatlsof ,但是我的要求是,我想通过侦听端口说一个进程x在chl21000303.sesson.net上运行: 32456。

我想要一个仅读取端口32456的linux命令,并希望像java -jar runtime.jar端口那样将其传递给java。

因此,我需要一些命令来仅获取正在运行的端口或侦听端口。 如果我尝试这样的netstat命令,我会说大约20行端口。

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程序

您可以在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脚本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM