当前位置: 首页 > news >正文

Linux命令集锦-个人整理(偏向进程和端口的查询)

# 查看详细日志(替换实际日志路径)
sudo tail -f /var/log/neo4j/debug.log# 检查端口占用
sudo netstat -tuln | grep 7474echo "fs.inotify.max_user_watches=100000" | sudo tee -a /etc/sysctl.conf
sudo sysctl -psudo nano /etc/neo4j/neo4j.confhostname -I  # 记录输出的IP(如172.xx.xx.xx)

以下是针对 netstatps auxlsof 在查看端口状态时的核心区别、适用场景及实例分析的详细对比,结合资料中的技术要点进行说明:


一、核心功能与设计目标对比

命令核心功能设计目标是否直接关联端口
netstat显示网络连接、路由表、接口统计等网络层信息(如TCP/UDP状态、监听端口、进程PID)网络状态监控✅ 直接支持
lsof列出系统所有打开的文件(包括网络套接字、磁盘文件、管道等),可过滤端口关联的进程文件/资源占用分析✅ 直接支持
ps aux显示当前运行进程的详细信息(CPU/内存占用、启动时间等),不直接关联端口进程状态监控❌ 需间接关联

📌 关键区别

  • netstatlsof 直接关联端口与进程,而 ps aux 仅提供进程信息,需结合其他命令关联端口。
  • lsof 的视角更广(所有文件资源),netstat 专注网络连接,ps aux 专注进程状态。

二、命令语法与输出解析(结合实例)

1. netstat:网络连接与端口的直接关联
# 查看所有TCP监听端口及对应进程名/PID
sudo netstat -tulnp

输出示例

Proto Recv-Q Send-Q Local Address  Foreign Address  State    PID/Program name
tcp   0      0     0.0.0.0:80     0.0.0.0:*        LISTEN    1234/nginx
tcp   0      0     127.0.0.1:5432 0.0.0.0:*        LISTEN    5678/postgres

分析

  • -tulnp 参数组合:
    • -t:仅TCP协议 | -u:UDP协议 | -l:监听状态 | -n:禁用DNS解析(显示IP) | -p:显示进程信息
  • 直接关联端口(:80:5432)与进程(nginxpostgres)及PID 。

2. lsof:通过文件描述符关联端口与进程
# 查看占用80端口的进程详情
sudo lsof -i :80

输出示例

COMMAND PID  USER   FD  TYPE DEVICE SIZE/OFF NODE NAME
nginx   1234 root   6u  IPv4 12345  0t0      TCP *:http (LISTEN)

分析

  • -i :80:过滤IPv4/IPv6中端口80的套接字文件
  • 字段含义
    • COMMAND:进程名 | PID:进程ID | FD:文件描述符(6u=IPv4套接字) | TYPE:资源类型
  • 优势:可查看进程打开的所有资源(如同时监听的多个端口、打开的文件)。

3. ps aux:仅显示进程状态,无法直接关联端口
# 查看所有进程状态(含CPU/内存占用)
ps aux

输出示例

USER  PID %CPU %MEM COMMAND
root  1234 0.0  1.0 nginx
postgres 5678 0.5  5.2 postgres

分析

  • 无端口信息!需先通过 netstat/lsof 获取端口对应的PID,再用 ps aux | grep <PID> 查看进程详情:

    # 查找PID 1234的进程资源占用
    ps aux | grep 1234
    
  • 适用场景:已知PID后检查进程资源消耗,或批量筛选进程(如 ps aux | grep nginx)。


三、典型场景与工具选择建议

场景1:快速定位端口占用进程
  • 首选工具netstat -tulnp | grep <端口>lsof -i :<端口>
  • 原因:直接输出进程名和PID,效率最高 。
  • 实例
    # 检查3306端口占用
    sudo netstat -tulnp | grep 3306
    # 或
    sudo lsof -i :3306
    
场景2:分析进程打开的所有网络端口
  • 首选工具lsof -p <PID>
  • 原因:列出进程打开的所有文件(含网络套接字)。
  • 实例
    # 查看PID 1234打开的所有端口和文件
    sudo lsof -p 1234
    
场景3:监控高资源占用进程的端口
  • 组合命令
    # 找出CPU占用前5的进程,再关联其端口
    ps aux --sort=-%cpu | head -6  # 获取高负载进程PID
    lsof -p <高负载PID> | grep "IPv[46]"  # 查看该进程的端口
    
场景4:排查恶意进程的隐蔽端口
  • 组合命令

    # 检测异常监听端口
    sudo netstat -tulp | grep LISTEN | awk '{print $7}' | sort -u
    # 交叉验证进程路径(通过PID)
    ps aux | grep <可疑PID>
    ls -l /proc/<可疑PID>/exe   # 查看进程真实路径
    

    📌 资料显示此方法常用于应急响应 。


四、进阶技巧与常见问题

1. 权限要求差异
命令需root权限场景原因
netstat -p✅ 显示其他用户的进程信息保护系统进程隐私
lsof -i✅ 查看非当前用户的端口占用访问系统级网络套接字
ps aux⚠️ 仅显示当前用户进程(非root时)系统安全策略
2. 替代方案:ss 命令
  • 背景netstat 已逐渐被更高效的 ss(Socket Statistics)取代 。

  • 对比优势

    # 查看所有TCP监听端口(速度更快)
    ss -tulnp
    
    • 输出格式与 netstat 兼容,但内核直接获取数据,性能提升10倍以上 。
3. 常见报错处理
  • 问题netstat 无进程名/PID
    解决:添加 -p 参数并提权(sudo)。
  • 问题lsof 无输出
    解决:检查端口是否存在或使用 sudo
  • 问题ps aux 找不到进程
    解决:确认PID是否已退出,或使用 pgrep 辅助 。

五、总结:工具选择决策树

graph TDA[需查看端口状态?] --> B{是否需直接关联进程?}B -->|是| C{是否需查看进程所有资源?}C -->|是| D[lsof -i :端口 或 lsof -p PID]C -->|否| E[netstat -tulnp | grep 端口]B -->|否| F[仅需进程状态?]F -->|是| G[ps aux | grep 进程名]F -->|否| H[组合命令:netstat/lsof + ps]

核心建议

  • 日常排查端口占用netstatss
  • 深度分析进程资源lsof
  • 监控进程状态ps aux
  • 高性能需求 → 优先使用 ss 替代 netstat
http://www.dtcms.com/a/292846.html

相关文章:

  • CS231n-2017 Lecture5卷积神经网络笔记
  • 如何把jar包打成docker镜像(SpringBoot项目打包成Docker )部署到Linux
  • CMOS知识点 离子注入工艺
  • OpenCV Mat UMat GpuMat Matx HostMem InputArray等设计哲学
  • Arduino学习笔记【快速入门】
  • 蓝牙通信架构(Bluetooth/BLE)
  • Windows系统暂停更新工具
  • 每日面试题12:JVM垃圾回收机制
  • 分布式数据库中间件ShardingSphere
  • Unity UI的未来之路:从UGUI到UI Toolkit的架构演进与特性剖析(1)
  • Java学习-----Bean
  • Datawhale AI 夏令营-心理健康Agent开发学习-Task1
  • 猎板 PCB:多场景适配下印制线路板的材料选择优化策略
  • 朴素贝叶斯算法原理与案例解析
  • linux: tar解压之后属主和属组不是当前用户问题
  • 2025人形机器人动捕技术研讨会即将于7月31日盛大开启
  • 阿里巴巴视觉算法面试30问全景精解
  • 知识库搭建之Meilisearch‘s 搜索引擎-创建搜索引擎项目 测评-东方仙盟测评师
  • 数据降噪/生物信号强化/缓解 dropout,深度学习模型 SUICA 实现空间转录组切片中任一位置基因表达的预测
  • [LLM]Synthetic Visual Genome
  • GNU到底是什么,与Unix和Linux是什么关系
  • 链表经典算法题
  • web复习
  • 网络原理 HTTP 和 HTTPS
  • kafka查看消息的具体内容 kafka-dump-log.sh
  • Python笔记完整版
  • 扇形区域拉普拉斯方程傅里叶解法2
  • 一款功能全面的文体场所预约小程序
  • Grails(Groovy)框架抛出NoHandlerFoundException而不是返回404 Not Found
  • 【多线程篇21】:深入浅出理解Java死锁