访问手机版  

Linux查看端口占用|Linux培训学习|考试认证|工资待遇与招聘,认准超级网工!

招聘|合作 登陆|注册

网络工程师培训

当前位置:网络工程师 > 技术课程 > linux > 热点关注 > linux查看端口占用

如何找出在Linux下打开tcp port 111或udp port 7000的进程?

时间:2018-06-07


您可以通过以下程序了解端口号及其关联进程:

  1. netstat - 一种显示网络连接,路由表和许多网络接口统计信息的命令行工具。
  2. 定影器 - 一种命令行工具,用于识别使用文件或套接字的进程。
  3. lsof - 一个命令行工具,用于在Linux / UNIX下列出打开的文件以报告所有打开的文件以及打开它们的进程的列表。
  4. / proc / $ pid / file system - 在Linux下,/ proc为/ proc / PID中的每个正在运行的进程(包括内核进程)提供一个目录,其中包含关于该进程的信息,特别包括进程名称。

您必须以root用户身份运行以上命令。

netstat的例子

键入以下命令:
# netstat -tulpn
示例输出:

活动的Internet连接(仅限服务器)
Proto Recv-Q Send-Q本地地址外部地址状态PID /程序名称
TCP 0 0 127.0.0.1:3306           0.0.0.0:* LISTEN 1138 / mysqld的     
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 850 / portmap     
TCP 0 0 0.0.0.0:80               0.0.0.0:* LISTEN 1607 / apache2的    
tcp 0 0 0.0.0.0:55091 0.0.0.0:* LISTEN 910 / rpc.statd   
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1467 / dnsmasq    
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 992 / sshd        
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1565 / cupsd      
tcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 3813 / transmission
tcp6 0 0 ::: 22 ::: * LISTEN 992 / sshd        
tcp6 0 0 :: 1:631 ::: * LISTEN 1565 / cupsd      
tcp6 0 0 ::: 7000 ::: * LISTEN 3813 / transmission
udp 0 0 0.0.0.0:111 0.0.0.0:* 850 / portmap     
udp 0 0 0.0.0.0:662 0.0.0.0:* 910 / rpc.statd   
udp 0 0 192.168.122.1:53 0.0.0.0:14 1467 / dnsmasq    
udp 0 0 0.0.0.0:67 0.0.0.0:14 1467 / dnsmasq    
udp 0 0 0.0.0.0:68 0.0.0.0:* 3697 / dhclient   
udp 0 0 0.0.0.0:7000 0.0.0.0:* 3813 /传输
udp 0 0 0.0.0.0:54746 0.0.0.0:* 910 / rpc.statd   

TCP端口3306由具有PID#1138的mysqld进程打开。可以使用/ proc来验证它,输入:
# ls -l /proc/1138/exe
Sample outputs:

lrwxrwxrwx 1 root root 0 2010-10-29 10:20 / proc / 1138 / exe  - > / usr / sbin / mysqld

您可以使用grep命令来过滤信息:
# netstat -tulpn | grep :80
示例输出:

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1607 / apache2

定影器命令

找出打开TCP端口7000的进程PID,输入:
# fuser 7000/tcp
Sample outputs:

7000 / tcp:3813

最后,找出与PID#3813关联的进程名称,输入:
# ls -l /proc/3813/exe
Sample outputs:

lrwxrwxrwx 1 vivek vivek 0 2010-10-29 11:00 / proc / 3813 / exe  - > / usr / bin / transmission

/ usr / bin / transmission是一个bittorrent客户端,请输入:
# man transmission
OR 
# whatis transmission
示例输出:

传输(1) - 一个bittorrent客户端

任务:找出进程的当前工作目录

要找到名为bittorrent或pid 3813的进程的当前工作目录,请输入:
# ls -l /proc/3813/cwd
Sample outputs:

lrwxrwxrwx 1 vivek vivek 0 2010-10-29 12:04 / proc / 3813 / cwd  - > / home / vivek

或者使用pwdx命令,请输入:
# pwdx 3813
Sample outputs:

3813:/ home / vivek

任务:找出进程的所有者

使用以下命令查找名为3813的进程PID的所有者:
# ps aux | grep 3813
或者采样输出:
ps aux | grep '[3]813'

vivek 3813 1.9 0.3 188372 26628?S1 10:58 2:27传输

或者尝试下面的ps命令:
# ps -eo pid,user,group,args,etime,lstart | grep '[3]813'
示例输出:

3813 vivek vivek传输02:44:05 10月29日星期五10:58:40 2010

另一个选项是/ proc / $ PID / environ,输入:
# cat /proc/3813/environ
OR 
# grep --color -w -a USER /proc/3813/environ
示例输出(注意 - 颜色选项):

图01:grep输出
图01:grep输出

 

lsof命令示例

按如下所示键入命令:

lsof -i:portNumber
lsof -i tcp:portNumber
lsof -i udp:portNumber
lsof -i80 
lsof -i80  |  grep LISTEN

示例输出:

apache2 1607 root 3u IPv4 6472 0t0 TCP *:www(LISTEN)
apache2 1616 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN)
apache2 1617 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN)
apache2 1618 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN)
apache2 1619 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN)
apache2 1620 www-data 3u IPv4 6472 0t0 TCP *:www(LISTEN)

现在,您可以获得更多关于pid#1607或1616等的信息:
# ps aux | grep '[1]616'
示例输出:
www-data 1616 0.0 0.0 35816 3880 ? S 10:20 0:00 /usr/sbin/apache2 -k start
我推荐以下命令来获取有关pid#1616的信息:
# ps -eo pid,user,group,args,etime,lstart | grep '[1]616'
示例输出:

1616 www-data www-data / usr / sbin / apache2 -k start 03:16:22 Friday 10月29日10:20:17 2010

哪里,

  • 1616:PID
  • www-date:用户名(所有者 - EUID)
  • www-date:组名(组 - EGID)
  • / usr / sbin / apache2 -k start:命令名称及其参数
  • 03:16:22:进程启动以来的时间,格式为[[dd-] hh:] mm:ss。
  • 星期五10月29日10:20:17 2010:命令开始的时间。

帮助:我发现一个我根本不认识的开放端口

文件/ etc / services用于将端口号和协议映射到服务名称。尝试匹配端口号:示例输出:
$ grep port /etc/services
$ grep 443 /etc/services

通过TLS / SSL的https 443 / tcp#http协议
https 443 / udp

检查rootkit

我强烈建议您查明哪些进程确实在运行,尤其是连接到高速Internet访问的服务器。您可以查找rootkit,该程序是为了在未经系统所有者和合法经理授权的情况下对计算机系统进行基本控制(以Linux / UNIX术语“root”访问,以Windows术语“管理员”访问)进行的。

留意你的带宽图

通常,有根服务器用于在其他计算机上发送大量垃圾邮件或恶意软件或DoS风格的攻击。

也可以看看:

有关更多信息,请参阅以下手册页:
$ man ps
$ man grep
$ man lsof
$ man netstat
$ man fuser

 上一个教程:返回列表