后端开发常用Linux命令

一、系统状态与资源监控

  1. top / htop
    • 实时查看系统 CPU、内存、进程占用情况(htop是增强版,支持鼠标操作和更直观的界面)。
    • 常用操作:按P按 CPU 排序,按M按内存排序,快速定位 Java 进程(java关键词)的资源消耗。
  2. free -h
    • 查看内存使用情况(总内存、已用、空闲、缓存等),-h以人类可读单位(GB/MB)显示。
    • 排查 Java 进程 OOM(内存溢出)时,先确认系统是否真的内存不足。
  3. df -h / du -sh *
    • df -h:查看磁盘分区使用率,排查日志或文件占满磁盘的问题(例如/分区满导致服务异常)。
    • du -sh *:查看当前目录下各文件 / 文件夹的大小,定位大文件(如异常增长的日志)。
  4. vmstat 1
    • 实时输出系统 CPU、内存、IO、进程切换等统计信息,间隔 1 秒刷新,用于分析系统瓶颈(如 IO 等待过高)。
  5. iostat
    • 查看磁盘 IO 性能(读写速度、IOPS、等待时间),需安装sysstat包,排查 Java 程序读写磁盘慢的问题。

二、进程与 Java 进程排查

  1. ps -ef | grep java
    • 查看所有 Java 进程的详细信息(进程 ID、启动用户、启动命令等),核心是获取PID(进程 ID)。
    • 示例:ps -ef | grep java 或更简洁的 pgrep -f java(直接输出 Java 进程 PID)。
  2. jps
    • JDK 自带命令,查看当前机器上所有 Java 进程的 PID 和主类名(如Main、JarLauncher),快速定位应用进程。
  3. kill / kill -9
    • 终止进程:kill PID 发送正常终止信号(允许进程释放资源),kill -9 PID 强制杀死进程(紧急情况使用)。
  4. top -p PID
    • 聚焦查看某个 Java 进程(通过 PID)的实时资源占用(CPU、内存百分比),判断是否存在资源泄漏。
  5. jstack PID
    • 打印 Java 进程的线程栈信息,用于排查死锁、线程阻塞、CPU 飙高等问题。
    • 示例:jstack 12345 > stack.log 输出到文件,分析BLOCKED状态的线程及锁信息。
  6. jmap -heap PID
    • 查看 Java 堆内存配置(初始 / 最大堆、新生代 / 老年代大小)和使用情况,排查堆内存配置是否合理。
  7. jmap -dump:format=b,file=heap.bin PID
    • 导出 Java 堆快照(heap dump),用于分析内存泄漏(结合 MAT 等工具),注意:大堆导出可能影响服务性能。
  8. jstat -gc PID 1000
    • 实时监控 Java 垃圾回收情况(间隔 1000ms),输出新生代 / 老年代 GC 次数、耗时、内存使用等,判断 GC 是否频繁或耗时过长。

三、日志分析

  1. tail -f 日志文件
    • 实时跟踪日志文件新增内容,常用于观察服务启动过程或实时报错(如tail -f app.log)。
  2. cat 日志文件 | grep "关键词"
    • 搜索日志中包含指定关键词的行(如grep "ERROR"找错误,grep "userId=123"定位用户相关日志)。
    • 扩展:grep -C 5 "ERROR" 显示错误行前后 5 行,grep -i "error" 忽略大小写。
  3. less 日志文件
    • 分页查看大日志文件,支持搜索(按/输入关键词,n下一个匹配)、翻页(空格/b),适合逐行分析。
  4. head -n 100 日志文件 / tail -n 100 日志文件
    • 查看日志前 100 行(启动信息)或后 100 行(最新日志),快速定位起止位置。
  5. sed / awk
    • 复杂日志分析:如sed -n '/2023-10-23 10:00:00/,/2023-10-23 10:05:00/p' app.log 提取某个时间段的日志;awk '{print $5}' app.log 提取日志中第 5 列内容(常用于统计)。

四、网络排查

  1. netstat -tuln / ss -tuln
    • 查看系统监听的端口及对应的进程(ss是netstat的替代工具,性能更好)。
    • 示例:netstat -tuln | grep 8080 检查 Java 服务的 8080 端口是否正常监听。
  2. netstat -anp | grep PID
    • 查看指定 Java 进程(PID)的网络连接情况(ESTABLISHED/ TIME_WAIT 等状态),排查连接泄露。
  3. telnet 目标IP 端口 / nc -zv 目标IP 端口
    • 测试网络连通性:检查 Java 服务是否能连接数据库(如telnet mysql-host 3306)或外部接口。
  4. ping 目标IP
    • 测试与目标服务器的网络延迟和丢包率,初步判断网络是否通畅。
  5. tcpdump -i any port 8080 -w traffic.cap
    • 抓包工具:捕获 8080 端口的网络流量,用于分析请求是否到达服务、数据包是否异常(需结合 Wireshark 分析)。

五、文件与权限操作

  1. ls -l / ll
    • 查看文件 / 目录的权限、所有者、大小等信息,排查 Java 服务因权限不足导致的文件读写失败(如日志文件无写入权限)。
  2. chmod / chown
    • chmod 755 app.jar:修改文件权限(确保 Java 进程可执行);chown appuser:appgroup app.log:修改文件所有者(避免权限拒绝)。
  3. find / -name "文件名"
    • 全局搜索文件,例如find /var/log -name "app.log" 查找日志文件位置。
  4. tar -zcvf 压缩包.tar.gz 目录 / tar -zxvf 压缩包.tar.gz
    • 压缩 / 解压文件,用于备份日志或传输 Java 应用包。

六、其他实用命令

  • date:查看系统时间(排查 Java 程序时间相关问题,如定时任务执行偏差)。
  • history:查看历史命令(快速复用之前执行过的排查命令)。
  • dmesg | grep -i outOfMemory:查看系统日志中的 OOM 记录(Java 进程被内核杀死时会记录)。
相关推荐
Super Rookie4 小时前
RabbitMQ 自动化脚本安装方案
运维·自动化·rabbitmq
key_Go4 小时前
0.基于Centos-Stream8 搭建Openstack环境
linux·运维·centos·openstack
wacpguo5 小时前
centos 配置网络
linux·网络·centos
Elastic 中国社区官方博客5 小时前
介绍 Elastic 的 Agent Builder - 9.2
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
卡卡恩5 小时前
使用uv创建系统全局python执行环境
python
贝锐5 小时前
把握三个要点,搭建企业远程技术支持安全体系
运维
查士丁尼·绵5 小时前
笔试-座位调整
python
飞翔的佩奇5 小时前
【完整源码+数据集+部署教程】【运动的&足球】足球场地区域图像分割系统源码&数据集全套:改进yolo11-RFAConv
前端·python·yolo·计算机视觉·数据集·yolo11·足球场地区域图像分割系统
feng_blog66885 小时前
Linux桌面X11服务-XRecord方案捕获鼠标点击的应用窗口
linux