Java 后端必会 Linux 常用命令总结:日志、进程、端口、部署一篇搞懂

张开发
2026/5/9 5:53:48 15 分钟阅读

分享文章

Java 后端必会 Linux 常用命令总结:日志、进程、端口、部署一篇搞懂
对于 Java 后端开发来说Linux 是绕不开的。平时我们写完 Spring Boot 项目之后最终大概率还是要部署到 Linux 服务器上。项目上线之后如果接口报错、服务启动失败、端口被占用、日志文件太大、磁盘空间不足基本都需要通过 Linux 命令去排查。所以 Linux 命令不是运维才需要会Java 后端也必须掌握一些高频命令。这篇文章主要总结后端开发中最常用的一些 Linux 命令不追求大而全重点放在实际开发和部署场景中怎么用。一、目录和文件相关命令1. 查看当前目录pwdpwd 用来查看当前所在目录。比如登录服务器之后不确定自己在哪个路径下就可以先执行pwd2. 查看目录文件ls ls -l ls -lh ls -a常用说明ls查看当前目录下的文件ls -l以列表形式查看文件详情ls -lh以更友好的方式显示文件大小ls -a查看所有文件包括隐藏文件平时后端开发最常用的是ls -lh比如查看 jar 包、日志文件、配置文件大小时非常方便。3. 切换目录cd /opt cd /opt/app cd .. cd ~说明cd /opt进入 /opt 目录cd ..返回上一级目录cd ~回到当前用户家目录后端项目一般可能部署在这些目录/opt/app /usr/local/app /home/app4. 创建目录mkdir logs mkdir -p /opt/app/logsmkdir 用来创建目录。如果要一次性创建多级目录可以使用mkdir -p /opt/app/logs5. 创建文件touch app.log touch application.ymltouch 可以用来创建一个空文件。比如创建日志文件touch app.log6. 复制文件cp app.jar /opt/app/ cp application.yml /opt/app/config/复制目录时需要加 -rcp -r logs /opt/backup/7. 移动或重命名文件mv app.jar /opt/app/ mv old.log new.logmv 既可以移动文件也可以重命名文件。比如把日志文件重命名mv nohup.out nohup-2026-05-08.out8. 删除文件或目录rm app.log rm -rf logs/注意rm -rf这个命令要谨慎使用尤其不要在根目录或者不确定的目录下乱执行。二、查看文件内容1. 查看整个文件cat app.logcat 适合查看内容比较少的文件。如果日志文件很大不建议直接使用 cat容易刷屏。2. 分页查看文件less app.logless 适合查看大文件。常用操作空格向下翻页b向上翻页/关键字搜索关键字q退出3. 查看文件前几行head app.log head -n 100 app.log查看前 100 行head -n 100 app.log4. 查看文件最后几行tail app.log tail -n 100 app.log查看最后 100 行日志tail -n 100 app.log5. 实时查看日志tail -f app.log tail -f nohup.out这是后端开发最常用的命令之一。比如 Spring Boot 项目启动后可以通过下面命令实时查看日志tail -f nohup.out如果线上接口报错也可以实时观察日志输出tail -f app.log三、搜索日志和关键字1. grep 搜索关键字grep ERROR app.log grep Exception app.log grep NullPointerException app.log比如排查空指针异常grep NullPointerException app.log2. 显示行号grep -n ERROR app.log-n 可以显示匹配内容所在的行号。3. 忽略大小写grep -i error app.log4. 查看关键字前后几行grep -C 5 Exception app.log grep -A 5 Exception app.log grep -B 5 Exception app.log说明-C 5显示匹配行前后 5 行-A 5显示匹配行后 5 行-B 5显示匹配行前 5 行排查异常时很有用grep -C 10 Exception app.log四、进程相关命令1. 查看所有进程ps -ef2. 查看 Java 进程ps -ef | grep java这是部署 Java 项目时非常常用的命令。比如查看 Spring Boot 项目是否正在运行ps -ef | grep app.jar3. 使用 jps 查看 Java 进程ps -efjps 是 JDK 自带的工具可以查看 Java 进程。jps -l可以显示完整类名或 jar 包路径。4. 结束进程kill 进程ID kill -9 进程ID一般可以先使用kill 进程ID如果进程无法正常结束再使用kill -9 进程ID比如kill -9 12345五、端口相关命令1. 查看端口占用netstat -tunlp查看某个端口是否被占用netstat -tunlp | grep 80802. 使用 lsof 查看端口lsof -i:8080比如 Spring Boot 启动失败提示 8080 端口被占用可以执行lsof -i:8080然后根据查到的 PID 结束进程kill -9 进程ID3. 使用 ss 查看端口ss -tunlp ss -tunlp | grep 8080有些 Linux 系统中ss 比 netstat 更推荐使用。六、Spring Boot 项目部署常用命令1. 前台启动java -jar app.jar这种方式启动后终端关闭程序也会停止。所以实际部署时一般不这么用。2. 后台启动nohup java -jar app.jar nohup.out 21 这是非常常见的 Spring Boot 后台启动命令。解释一下nohup表示不挂断运行java -jar app.jar启动 jar 包 nohup.out标准输出写入 nohup.out21错误输出也写入 nohup.out后台运行启动后可以查看日志tail -f nohup.out3. 指定配置文件启动nohup java -jar app.jar --spring.profiles.activeprod nohup.out 21 表示使用 prod 环境配置启动。4. 指定端口启动nohup java -jar app.jar --server.port8081 nohup.out 21 5. 指定 JVM 参数启动nohup java -Xms512m -Xmx1024m -jar app.jar nohup.out 21 说明-Xms512m初始堆内存 512MB-Xmx1024m最大堆内存 1024MB七、系统资源查看命令1. 查看 CPU 和内存占用toptop 可以实时查看系统资源占用情况。常见关注CPU 使用率内存使用率系统负载哪个进程占用资源高2. 查看内存free -h-h 表示用更友好的单位显示比如 GB、MB。3. 查看磁盘空间df -h如果项目日志写不进去或者服务器异常磁盘空间是必须排查的一项。4. 查看目录大小du -sh * du -sh logs/查看当前目录下各文件和目录大小du -sh *查看 logs 目录大小du -sh logs/5. 查看系统负载uptime可以查看系统运行时间和平均负载。八、压缩和解压命令1. tar.gz 解压tar -zxvf app.tar.gz2. tar.gz 压缩tar -zcvf logs.tar.gz logs/比如把日志目录压缩tar -zcvf logs-2026-05-08.tar.gz logs/3. zip 解压unzip dist.zip4. zip 压缩zip -r logs.zip logs/九、文件上传和下载1. scp 上传文件scp app.jar root服务器IP:/opt/app/比如scp app.jar root192.168.1.100:/opt/app/2. scp 下载文件scp root服务器IP:/opt/app/app.log ./比如下载服务器日志scp root192.168.1.100:/opt/app/app.log ./3. 上传目录scp -r dist/ root服务器IP:/opt/app/十、权限相关命令1. 修改文件权限chmod 755 start.sh chmod x start.sh如果 shell 脚本无法执行可以加执行权限chmod x start.sh然后执行./start.sh2. 修改文件所属用户chown appuser:appuser app.jar表示把 app.jar 的所属用户和用户组改为 appuser。十一、常见后端排查场景场景一接口报 500怎么查先看日志tail -f app.log搜索异常grep -C 10 Exception app.log如果是空指针grep -C 10 NullPointerException app.log场景二Spring Boot 项目启动失败先看启动日志tail -f nohup.out查看 Java 进程ps -ef | grep java查看端口是否被占用lsof -i:8080如果端口被占用可以结束对应进程kill -9 进程ID场景三服务器磁盘满了查看磁盘空间df -h查看当前目录下文件大小du -sh *一般日志目录可能比较大du -sh logs/可以压缩历史日志tar -zcvf logs-backup.tar.gz logs/场景四项目突然变慢查看系统资源top查看内存free -h查看磁盘df -h查看 Java 进程ps -ef | grep java十二、常用命令速查表场景命令查看当前目录pwd查看文件列表ls -lh切换目录cd /opt/app创建目录mkdir -p logs创建文件touch app.log复制文件cp app.jar /opt/app/移动文件mv app.jar /opt/app/删除文件rm app.log实时看日志tail -f app.log搜索异常grep -C 10 Exception app.log查看 Java 进程ps -ef查看端口lsof -i:8080杀掉进程kill -9 进程ID查看内存free -h查看磁盘df -h查看目录大小du -sh *后台启动 jarnohup java -jar app.jar nohup.out 21 解压 tar.gztar -zxvf app.tar.gz压缩目录tar -zcvf logs.tar.gz logs/上传文件scp app.jar root服务器IP:/opt/app/总结Linux 命令对于 Java 后端开发来说非常重要。实际工作中我们不一定要记住所有 Linux 命令但是一些高频命令必须熟悉比如文件操作、日志查看、进程管理、端口排查、项目部署、磁盘和内存查看、权限修改。尤其是部署 Spring Boot 项目、查看线上日志、排查端口占用、分析服务器资源这些场景基本每天都会遇到。所以学习 Linux 命令不是为了背命令而是为了在项目出问题时能够快速定位问题、解决问题。

更多文章