Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Unix中从ps找到java调试端口_Java_Unix_Port_Ps - Fatal编程技术网

在Unix中从ps找到java调试端口

在Unix中从ps找到java调试端口,java,unix,port,ps,Java,Unix,Port,Ps,当使用“ps-fu${USER}|grep address”时,我可以找到java进程以及作为进程命令行的一部分出现的调试端口号。 我的问题是,如何从包含许多字符的命令行中提取端口号。问题可以归结为如何在两个字符串之间提取一个单词。我一直在研究如何与grep、awk或sed合作。但是,我的所有尝试都以显示整个进程命令行而不仅仅是java端口号结束 非常感谢。您可以使用sed提取调试端口: ps -fu ${USER} | grep address | sed 's/.*address=\([0-

当使用“ps-fu${USER}|grep address”时,我可以找到java进程以及作为进程命令行的一部分出现的调试端口号。 我的问题是,如何从包含许多字符的命令行中提取端口号。问题可以归结为如何在两个字符串之间提取一个单词。我一直在研究如何与grep、awk或sed合作。但是,我的所有尝试都以显示整个进程命令行而不仅仅是java端口号结束


非常感谢。

您可以使用
sed
提取调试端口:

ps -fu ${USER} | grep address | sed 's/.*address=\([0-9]*\).*/\1/'
更新

ps
的输出可能包括
grep
命令本身。您可以再次使用
grep
将其过滤掉:

ps -fu ${USER} | grep address | sed 's/.*address=\([0-9]*\).*/\1/' | grep ^\d

如果您添加了这样一个命令行的示例,那将非常有帮助。我只能假设它类似于
java-Xdebug-Xrunjdwp:transport=dt_socket,address=8998,server=y-jar myapp.jar
,但当然我只是在猜测。可能的重复请在发布新问题之前始终先搜索,并且,请尝试问真正的问题(在您的例子中,如何在两个字符串之间提取单词)而不是从上下文开始。如果删除上下文,您也会很快注意到问题已经被提出。非常感谢!最终我使用下面的方法只获得端口号:ps-fu${USER}grep address | sed's/*address=([0-9]*)*/\1/'| head-n1.实际上,现在我注意到,对于一些服务器,我可以在打印“grep address”的行之后和之前看到调试端口。奇怪……最后,我发现这个命令非常有效:ps-fu${USER}grep address | sed's/*address=\([0-9]*\)./\1/''grep-v${USER}grep-v^[:blank:]*$”再次感谢你的回答