Linux下如何根据进程名查端口号(或根据端口号查进程名)

在具体的Linux系统维护中,特别对于某些我们初次接触的新应用程序,我们往往需要根据进程名查对应的端口号(当然,前提是进程要处于启动状态),或者反过来,根据端口号查对应的进程名。那么,我们该采用什么方法呢?

1、根据进程名查对应的端口号

 如果你在网上搜索一下,发现有不少这方面的资料,仔细尝试,却发现多半是不正确的(吐槽一下:文抄公真是多如牛毛,以讹传讹太可恶)。其实这个很容易做到:

 #netstat -tlnp | grep processname

2、根据端口号查对应的进程名

网上推荐使用两种方法,分别用到lsof和netstat命令,在这里根据我的使用经验总结一下:

1)使用lsof命令 

#lsof -Pnl -i :portnumber

lsof(list open files)是一个列出当前系统中打开文件的工具。在linux环境下,everything is file,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

上述lsof命令参数解释:

-P :该选项禁止端口号到端口名的转换,这样可以加快lsof运行速度。
-n :该选项禁止端口号到主机名称的转换,这样不仅可以加快lsof的运行速度,而且在主机名称查找不能奏效时非常有用。
-l :该选项禁止用户ID号到登录名的转换,这在登录名查找不正确或很慢时非常有用。
-i  [info]:该选项指定显示与info中互联网地址相匹配的信息。

 2)使用netstat命令

 #netstat-tlnp | grep :portnumber

注意:portnumber前面最好加上:,这样便于缩小查询范围。这种方法与第一种方法实际查找的结果不是同一内容,但都可以查到进程名,差别在于,这种方法看到的是最简单的端口监听信息,而第一种方法看到的是跟该端口关联的具体网络连接,大家各取所需吧。

原文:https://blog.51cto.com/riser/1341575

原文地址:https://www.cnblogs.com/sucretan2010/p/14303176.html