Linux 端口和进程管理命令

Linux 端口和进程管理详细指南

一、查看端口使用情况

1. netstat 命令示例

# 查看所有TCP和UDP监听端口
$ netstat -tuln
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     
tcp6       0      0 :::80                   :::*                    LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*                          

# 查看详细信息(包括进程名和PID)
$ sudo netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address  State    PID/Program name
tcp        0      0 0.0.0.0:22     0.0.0.0:*        LISTEN   1234/sshd
tcp6       0      0 :::80          :::*             LISTEN   5678/nginx
  • 查询指定端口的基本语法
netstat -tunlp | grep <端口号>
# 或
netstat -anp | grep <端口号>

### 示例1:查询80端口的使用情况
```bash
$ sudo netstat -tunlp | grep :80
tcp6       0      0 :::80         :::*        LISTEN      1234/nginx

输出解析:

  • tcp6:协议类型(IPv6的TCP协议)
  • 0 0:接收队列和发送队列大小
  • :::80:本地地址和端口(::表示所有IPv6地址,80是端口)
  • :::*:远程地址和端口(*表示任意)
  • LISTEN:连接状态(监听状态)
  • 1234/nginx:进程PID和名称

2. ss 命令示例

# 查看所有监听端口
$ ss -tuln
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       511                  *:80                 *:*     

# 显示进程信息
$ sudo ss -tunlp
Netid  State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  Process
tcp    LISTEN  0       128            0.0.0.0:22           0.0.0.0:*     users:(("sshd",pid=1234,fd=3))
tcp    LISTEN  0       511                  *:80                 *:*     users:(("nginx",pid=5678,fd=6))

3. lsof 命令示例

# 查看所有网络连接
$ sudo lsof -i
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1234    root    3u  IPv4  12345      0t0  TCP *:ssh (LISTEN)
nginx   5678    www     6u  IPv6  23456      0t0  TCP *:http (LISTEN)

# 查看特定端口(如80)
$ sudo lsof -i :80
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   5678 www     6u  IPv6  23456      0t0  TCP *:http (LISTEN)

二、查看进程情况

1. ps 命令示例

# 查看所有进程
$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 169316 13056 ?        Ss   May10   0:01 /sbin/init
www       5678  0.0  0.5 123456 45678 ?        S    May10   0:10 nginx: worker process

# 查找特定进程
$ ps aux | grep nginx
www       5678  0.0  0.5 123456 45678 ?        S    May10   0:10 nginx: worker process

2. top 命令示例

$ top
top - 14:30:45 up 2 days,  3:15,  2 users,  load average: 0.15, 0.05, 0.01
Tasks: 120 total,   1 running,  70 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.2 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8000000 total,  1000000 free,  2000000 used,  5000000 buff/cache
KiB Swap:  2000000 total,  1900000 free,   100000 used.  5500000 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 5678 www       20   0  123456  45678   1234 S   0.0  0.6   0:10.05 nginx
 1234 root      20   0  169316  13056   5678 S   0.0  0.2   0:01.23 sshd

三、查找并终止进程

1. 查找特定端口对应的进程

# 查找使用80端口的进程
$ sudo lsof -i :80
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   5678 www     6u  IPv6  23456      0t0  TCP *:http (LISTEN)

# 或者使用ss
$ sudo ss -tunlp | grep :80
tcp   LISTEN 0      511      *:80       *:*    users:(("nginx",pid=5678,fd=6))

2. 终止进程的多种方法

# 优雅终止(发送SIGTERM信号)
$ sudo kill 5678

# 强制终止(发送SIGKILL信号)
$ sudo kill -9 5678

# 通过进程名终止
$ sudo pkill nginx

# 终止所有同名进程
$ sudo killall nginx

# 组合命令: 查找并终止占用8080端口的进程
$ sudo kill -9 $(sudo lsof -t -i:8080)

四、总结表格

操作类型常用命令示例说明
查看端口netstat -tunlpsudo netstat -tunlp查看所有监听端口和对应进程
ss -tunlpsudo ss -tunlp更现代的端口查看工具
lsof -isudo lsof -i :80查看特定端口使用情况
查看进程ps auxps aux | grep nginx查看所有进程或筛选特定进程
toptop实时进程监控
htophtop增强版top(需安装)
终止进程kill PIDkill 1234正常终止进程
kill -9 PIDkill -9 1234强制终止进程
pkillpkill nginx通过进程名终止
killallkillall nginx终止所有同名进程

五、实用技巧

  1. 查找并终止占用端口的服务

    # 查找占用8080端口的PID并终止
    sudo kill -9 $(sudo lsof -t -i:8080)
    
  2. 查看进程树关系

    pstree -p  # 显示进程树结构
    
  3. 持续监控网络连接

    watch -n 1 "netstat -tulnp"  # 每秒刷新一次
    
  4. 查看进程打开的文件

    lsof -p PID  # 查看特定进程打开的文件
    
  5. 按内存/CPU排序进程

    top -o %MEM  # 按内存使用排序
    top -o %CPU  # 按CPU使用排序
    

记住,修改系统服务或重要进程前,请确认操作的影响,特别是使用kill -9强制终止可能导致数据丢失,应优先尝试普通终止方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值