yar*_*art 23 linux bash parsing
我正在尝试确定哪些应用程序正在使用某个端口并获取netstat -tlnp | grep <port> for Linux.
此命令返回以下输出:
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:<port> 0.0.0.0:* LISTEN 3591/java
Run Code Online (Sandbox Code Playgroud)
我需要获得结果只有进程和PID的名称,即java 3591.
什么是最好的方法呢?
谢谢.
Pau*_*ce. 30
尝试
ps -p $(lsof -ti tcp:80) o comm=,pid=
Run Code Online (Sandbox Code Playgroud)
要么
netstat -tlnp | awk '/:80 */ {split($NF,a,"/"); print a[2],a[1]}'
Run Code Online (Sandbox Code Playgroud)
Sha*_*hin 15
(略微偏离原始问题),找出哪个进程侦听某个端口号,我通常使用该lsof命令.例如:
lsof -i tcp:80
Run Code Online (Sandbox Code Playgroud)
要仅显示进程名称和PID,请使用以下命令解析输出:
lsof | tail -n +2 | awk '{print $1 " " $2}'
Run Code Online (Sandbox Code Playgroud)
该tail命令会跳过输出标题,同时awk打印出所需的列.
lsof尝试grep输出netstat可能会很麻烦,因为您需要确保匹配正确的列.一个强大的解决方案可能相当漫长而且很难(无论如何)按需生产.
lsof为您节省匹配正确端口的麻烦,并且还有许多其他用途,例如我们现在正在做的事情的反转(找出进程正在使用哪些端口),或者确定哪个进程正在使用文件/安装点(或反向).有关更多示例,请参见lsof联机帮助页.