温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux如何检查程序和监听的端口

发布时间:2023-02-09 14:11:01 来源:亿速云 阅读:340 作者:iii 栏目:建站服务器

Linux如何检查程序和监听的端口

在Linux系统中,了解哪些程序正在运行以及它们监听的端口是非常重要的。这不仅有助于系统管理员监控系统状态,还能帮助排查网络问题、优化性能以及确保系统安全。本文将详细介绍如何在Linux系统中检查运行中的程序及其监听的端口。

1. 使用ps命令查看运行中的程序

ps命令是Linux中最常用的查看进程状态的工具之一。通过ps命令,我们可以列出当前系统中正在运行的进程。

1.1 基本用法

ps aux
  • a:显示所有用户的进程。
  • u:显示进程的详细信息,包括用户、CPU和内存使用情况等。
  • x:显示没有控制终端的进程。

1.2 示例输出

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 169316  9384 ?        Ss   Oct01   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Oct01   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Oct01   0:00 [rcu_gp]
...
  • USER:进程的所有者。
  • PID:进程ID。
  • %CPU:CPU使用率。
  • %MEM:内存使用率。
  • VSZ:虚拟内存大小。
  • RSS:物理内存大小。
  • TTY:进程关联的终端。
  • STAT:进程状态。
  • START:进程启动时间。
  • TIME:进程占用CPU的时间。
  • COMMAND:启动进程的命令。

1.3 过滤特定进程

如果你想查找特定的进程,可以使用grep命令进行过滤。例如,查找所有与nginx相关的进程:

ps aux | grep nginx

2. 使用netstat命令查看监听的端口

netstat命令用于显示网络连接、路由表、接口统计信息等。通过netstat,我们可以查看系统中哪些端口正在被监听。

2.1 基本用法

netstat -tuln
  • -t:显示TCP连接。
  • -u:显示UDP连接。
  • -l:显示监听中的端口。
  • -n:以数字形式显示地址和端口号。

2.2 示例输出

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
...
  • Proto:协议类型(TCP或UDP)。
  • Recv-Q:接收队列中的数据量。
  • Send-Q:发送队列中的数据量。
  • Local Address:本地地址和端口。
  • Foreign Address:远程地址和端口。
  • State:连接状态(如LISTEN表示监听中)。

2.3 过滤特定端口

如果你想查看特定端口的监听情况,可以使用grep命令进行过滤。例如,查看端口80的监听情况:

netstat -tuln | grep :80

3. 使用ss命令查看监听的端口

ss命令是netstat的替代工具,功能更强大,性能更好。它同样可以用于查看系统中监听的端口。

3.1 基本用法

ss -tuln
  • -t:显示TCP连接。
  • -u:显示UDP连接。
  • -l:显示监听中的端口。
  • -n:以数字形式显示地址和端口号。

3.2 示例输出

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:*                    
tcp    LISTEN     0      128    127.0.0.1:631       0.0.0.0:*                    
tcp    LISTEN     0      128    :::80               :::*                         
udp    UNCONN     0      0      0.0.0.0:68          0.0.0.0:*                    
...
  • Netid:网络类型(如tcpudp)。
  • State:连接状态(如LISTEN表示监听中)。
  • Recv-Q:接收队列中的数据量。
  • Send-Q:发送队列中的数据量。
  • Local Address:Port:本地地址和端口。
  • Peer Address:Port:远程地址和端口。

3.3 过滤特定端口

同样,你可以使用grep命令过滤特定端口。例如,查看端口22的监听情况:

ss -tuln | grep :22

4. 使用lsof命令查看程序和端口

lsof命令用于列出打开的文件。在Linux中,网络连接也被视为文件,因此lsof可以用来查看哪些程序正在使用哪些端口。

4.1 基本用法

lsof -i
  • -i:显示与网络相关的文件。

4.2 示例输出

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      1234  root    3u  IPv4  12345      0t0  TCP *:ssh (LISTEN)
nginx     5678  www     4u  IPv4  23456      0t0  TCP *:http (LISTEN)
...
  • COMMAND:进程名称。
  • PID:进程ID。
  • USER:进程的所有者。
  • FD:文件描述符。
  • TYPE:文件类型(如IPv4IPv6)。
  • DEVICE:设备号。
  • SIZE/OFF:文件大小或偏移量。
  • NODE:节点号。
  • NAME:文件名或网络地址。

4.3 过滤特定端口

你可以使用grep命令过滤特定端口。例如,查看端口80的使用情况:

lsof -i :80

5. 使用fuser命令查看端口占用

fuser命令用于显示哪些进程正在使用指定的文件或端口。

5.1 基本用法

fuser -n tcp 80
  • -n:指定协议类型(如tcpudp)。
  • 80:端口号。

5.2 示例输出

80/tcp:               1234  5678
  • 12345678:使用该端口的进程ID。

5.3 杀死占用端口的进程

如果你想杀死占用某个端口的进程,可以使用-k选项:

fuser -k -n tcp 80

6. 总结

在Linux系统中,检查运行中的程序及其监听的端口是系统管理和网络排查的重要任务。通过psnetstatsslsoffuser等命令,我们可以轻松地获取这些信息。掌握这些工具的使用方法,将有助于你更好地管理和维护Linux系统。

希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI