当前位置:

首页 > 编程开发 > Java后端必会Linux常用命令之一篇搞懂日志、进程、端口、部署

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

聚焦Java后端开发者高频使用的Linux命令,涵盖日志实时查看(tail-f)、进程管理(ps-ef、kill)、端口排查(netstat、lsof)、项目部署(nohupjava-jar)、文件操作(ls、cd、cp、mv、rm)、关键字搜索(grep)及系统资源监控(top、free、df)。针对接口报错、启动失败、磁盘满等常见场景给出排查步骤。

前言

对于 Ja va 后端开发者而言,Linux 是一个怎么都绕不开的话题。

Ja va后端必会Linux常用命令之一篇搞懂日志、进程、端口、部署

大多数时候,你精心打磨的 Spring Boot 项目,最终还是要被部署到一台 Linux 服务器上。一旦项目上线,各种状况就来了:接口报错、服务启动失败、端口被莫名其妙地占用、日志文件撑爆磁盘……这些场景,只要你不打算用重启大法解决一切,那就免不了要用 Linux 命令去排查。

所以,别再觉得 Linux 只是运维同事的专属技能。对于后端开发者来说,掌握一些高频命令,就是保障项目稳定运行的硬通货。这篇文章就不做“面面俱到”的百科全书了,重点聚焦我们在实际开发和部署中最常用的那些场景。

一、目录和文件相关命令

1. 查看当前目录

pwd

当你登录到一台陌生的服务器,大脑一片空白时,第一件事就是搞清自己在哪。这时 pwd 就是你最忠实的向导。

pwd

它会直接告诉你当前所处的绝对路径。

2. 查看目录文件

ls
ls -l
ls -lh
ls -a

这几个命令看着简单,但用法却不少,我们来拆解一下:

  • ls:最基础的,列出当前目录下的文件名。
  • ls -l:以列表形式展示,能看到文件的权限、所有者、大小、修改时间。
  • ls -lh:这个最实用,因为它会用 KB、MB 这种好理解的单位显示文件大小。
  • ls -a:把隐藏文件(比如 .gitignore)也揪出来。

日常开发中,ls -lh 基本是高频使用的。不管是查看 jar 包的大小,还是检查日志文件是否过大,它都非常直观。

3. 切换目录

cd /opt
cd /opt/app
cd ..
cd ~

这一点不难理解,cd 命令帮你实现目录间的灵活跳跃。比如:

  • cd /opt:直接跳转到 /opt 目录。
  • cd ..:返回上一级目录。
  • cd ~:回到当前用户的家目录。

一般来说,Ja va 后端项目喜欢驻扎在 /opt/app、/usr/local/app 或 /home/app 这类目录下。

4. 创建目录

mkdir logs
mkdir -p /opt/app/logs

如果你想一次性创建一个多级目录树,比如 /opt/app/logs,直接使用 mkdir -p /opt/app/logs 就能一步到位,不必一层层手动创建,省心不少。

5. 创建文件

touch app.log
touch application.yml

这个命令非常“轻型”,就是个空文件生成器。比如你需要创建一个日志文件来记录信息,直接 touch app.log 即可。

6. 复制文件

cp app.jar /opt/app/
cp application.yml /opt/app/config/

复制文件是常规操作,但如果是复制目录,记得加一个 -r 参数:cp -r logs /opt/backup/

7. 移动或重命名文件

mv app.jar /opt/app/
mv old.log new.log

这里有个小技巧:mv 命令既可以搬家,也可以改名。比如你想把 nohup.out 这个日志文件改名备份,直接执行 mv nohup.out nohup-2026-05-08.out 就行。

8. 删除文件或目录

rm app.log
rm -rf logs/

这里需要特别提醒一下:rm -rf 是核武器级别的命令,一定一定慎用。尤其是在根目录或者你不确定当前路径的情况下,随意执行这行命令,可能会带来灾难性的后果。

二、查看文件内容

1. 查看整个文件

cat app.log

cat 适合查看没有多少内容的文件。如果日志文件很大,那它会把你的命令行窗口刷得眼花缭乱。

2. 分页查看文件

less app.log

less 是大文件阅读神器。你可以这样操作:按空格向下翻页,按 b 向上翻页,输入 /关键字 可以快速搜索,查看完毕按 q 就能退出。

3. 查看文件前几行

head app.log
head -n 100 app.log

如果你想快速预览日志的开头部分,比如前 100 行,可以用 head -n 100 app.log。

4. 查看文件最后几行

tail app.log
tail -n 100 app.log

跟 head 对称,tail 看的是文件的尾部。比如:tail -n 100 app.log 可以查看最后 100 行的日志。

5. 实时查看日志

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

当线上接口返回 500,你第一反应肯定是:异常在哪里?这时 grep 就登场了。比如排查空指针异常,一行 grep "NullPointerException" app.log 就能帮你快速定位。

2. 显示行号

grep -n "ERROR" app.log

加上 -n 参数,它会同时告诉你匹配行在文件中的行号,方便你结合上下文排查。

3. 忽略大小写

grep -i "error" app.log

-i 参数可以忽略大小写,这意味着你输 “error”,它会同时匹配 “Error”、“ERROR” 等所有变体。

4. 查看关键字前后几行

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 -ef

2. 查看 Ja va 进程

ps -ef | grep ja va

这是个非常高频的组合。当你排查 Spring Boot 项目是否正在运行时,ps -ef | grep app.jar 能够迅速锁定目标进程。

3. 使用 jps 查看 Ja va 进程

ps -ef

如果你比较“Ja va 化”,JDK 自带了一个挺方便的小工具叫 jps -l,它能直接列出所有正在运行的 Ja va 进程,并显示完整类名或 jar 包路径。

4. 结束进程

kill 进程ID
kill -9 进程ID

关于结束进程,通常我们会先尝试温和的 kill 进程ID,如果进程不听话,再用强制性的 kill -9 进程ID。

五、端口相关命令

1. 查看端口占用

netstat -tunlp

当你启动 Spring Boot 时,如果看到“Port 8080 is already in use”的提示,那第一件事就是用 netstat -tunlp | grep 8080 来查看究竟是哪个进程占用了 8080 端口。

2. 使用 lsof 查看端口

lsof -i:8080

另一个常用的命令是 lsof。比如 Spring Boot 启动失败,提示 8080 端口被占,你可以执行 lsof -i:8080,然后根据查到的 PID,执行 kill -9 进程ID 来释放端口。

3. 使用 ss 查看端口

ss -tunlp
ss -tunlp | grep 8080

在一些较新的 Linux 系统中,ss 命令比 netstat 更受推荐,性能更优。

六、Spring Boot 项目部署常用命令

1. 前台启动

ja va -jar app.jar

这种方式一运行,你的终端就变成了项目的“控制台”。一旦关闭终端,程序也会随之终止,所以一般不用在生产环境里。

2. 后台启动

nohup ja va -jar app.jar > nohup.out 2>&1 &

这是最常见的 Spring Boot 后台启动方式。我们来拆解一下:

  • nohup:跟终端断开后也不会停止运行。
  • ja va -jar app.jar:启动 jar 包。
  • > nohup.out:标准输出写入 nohup.out 文件。
  • 2>&1:错误输出也一并写入 nohup.out。
  • &:让它在后台运行。

启动之后,通过 tail -f nohup.out 就可以实时查看日志。

3. 指定配置文件启动

nohup ja va -jar app.jar --spring.profiles.active=prod > nohup.out 2>&1 &

意思是使用 prod 环境的配置启动项目。

4. 指定端口启动

nohup ja va -jar app.jar --server.port=8081 > nohup.out 2>&1 &

5. 指定 JVM 参数启动

nohup ja va -Xms512m -Xmx1024m -jar app.jar > nohup.out 2>&1 &

这里 -Xms512m 设置初始堆内存为 512MB,-Xmx1024m 设置最大堆内存为 1024MB。

七、系统资源查看命令

1. 查看 CPU 和内存占用

top

top 是一个实时监控器,可以直观地看到系统资源的使用情况:CPU 使用率、内存使用率、系统负载、以及哪个进程是“耗能大户”。

2. 查看内存

free -h

加上 -h 参数后,它会用 GB、MB 这样很容易理解的单位来显示内存总量和使用情况。

3. 查看磁盘空间

df -h

如果项目日志写不进去了,或者服务器突然变得异常,去检查一下磁盘空间往往会发现线索。

4. 查看目录大小

du -sh *
du -sh logs/

du -sh * 可以查看当前目录下所有文件和目录的大小,而 du -sh logs/ 则专注查看 logs 目录的大小。

5. 查看系统负载

uptime

它可以告诉你系统已经运行了多久,以及最近 1 分钟、5 分钟、15 分钟的平均负载情况。

八、压缩和解压命令

1. tar.gz 解压

tar -zxvf app.tar.gz

2. tar.gz 压缩

tar -zcvf logs.tar.gz logs/

比如你想备份日志,可以像这样压缩:tar -zcvf logs-2026-05-08.tar.gz logs/

3. zip 解压

unzip dist.zip

4. zip 压缩

zip -r logs.zip logs/

九、文件上传和下载

1. scp 上传文件

scp app.jar root@服务器IP:/opt/app/

比如你想把本地的 app.jar 上传到远程服务器,执行 scp app.jar root@192.168.1.100:/opt/app/ 即可。

2. scp 下载文件

scp root@服务器IP:/opt/app/app.log ./

从服务器下载日志文件到本地,一行搞定:scp root@192.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.sh 来执行了。

2. 修改文件所属用户

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,接着查 Ja va 进程:ps -ef | grep ja va,再看看端口是否被占: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 看磁盘,再用 ps -ef | grep ja va 看看是不是 Ja va 进程占用了太多资源。

十二、常用命令速查表

场景命令
查看当前目录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
查看 Ja va 进程ps -ef|grep ja va
查看端口lsof -i:8080
杀掉进程kill -9 进程ID
查看内存free -h
查看磁盘df -h
查看目录大小du -sh *
后台启动 jarnohup ja va -jar app.jar > nohup.out 2>&1 &
解压 tar.gztar -zxvf app.tar.gz
压缩目录tar -zcvf logs.tar.gz logs/
上传文件scp app.jar root@服务器IP:/opt/app/

总结

Linux 命令对于 Ja va 后端开发来讲,不是锦上添花,而是必备技能。

不一定要把所有命令都背得滚瓜烂熟,但那些高频的、跟日常工作息息相关的命令——文件操作、日志查看、进程管理、端口排查、项目部署、磁盘和内存分析、权限修改,一定要做到心中有数。

尤其是当我们部署 Spring Boot 项目、排查线上日志、分析端口冲突、或者检查服务器资源时,这些命令就像是解决疑难杂症的“趁手工具”。学习 Linux 命令,最终目的不是死记硬背,而是为了在项目出问题时,能快速找到症结、解决问题。

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
编程开发 Java
相关文章 更多
解决PHP递归报错:max_nesting_level限制与内存溢出处理
解决PHP递归报错:max_nesting_level限制与内存溢出处理

遇到PHP递归报错时,不要盲目调大max_nesting_level。本文教你区分Xdebug限制、内存耗尽和正则递归错误,提供代码级的终止条件优化与迭代替代方案,彻底解决栈溢出问题。

PHP递归中static变量与引用传递的常见陷阱及调试
PHP递归中static变量与引用传递的常见陷阱及调试

本文分析PHP递归中static变量导致的状态污染及引用传递引发的共享数据修改问题。提供具体的代码复现、缓存键设计建议及调试打印技巧,帮助开发者避免隐蔽的逻辑错误。

PHP递归性能优化技巧与迭代替代方案
PHP递归性能优化技巧与迭代替代方案

解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。

Java测试中怎么使用Mockito模拟依赖对象
Java测试中怎么使用Mockito模拟依赖对象

详细讲解在Java单元测试中如何使用Mockito模拟依赖对象,包括引入依赖、创建Mock、打桩返回值、行为验证以及Mock与Spy的核心差异和常见陷阱排查。

链表删除节点的时间复杂度是多少及其详细分析
链表删除节点的时间复杂度是多少及其详细分析

详细分析链表删除节点的时间复杂度,深入探讨单链表与双向链表在不同已知前提下的查找与删除开销,并结合完整代码与清晰图解进行对比总结。

codex如何配置模型参数及文件设置教程
codex如何配置模型参数及文件设置教程

想知道如何让AI写出的代码更贴合你的习惯?本文手把手教你在VS Code中调整Codex相关模型参数,通过修改配置文件优化温度值和令牌限制,解决代码建议不准确或响应慢的问题。

Claude Code AI编程工具实力揭秘与编程助手实测
Claude Code AI编程工具实力揭秘与编程助手实测

通过实测展示Claude Code在终端中如何理解自然语言指令、自动修改代码文件并处理复杂编程任务,帮助开发者评估其实际辅助能力。

winforms教程自学入门与基础开发步骤详解
winforms教程自学入门与基础开发步骤详解

本教程详细讲解如何使用Visual Studio创建WinForms项目,通过添加按钮和标签控件并编写点击事件代码,实现一个基础的计数器功能,适合C#初学者快速上手Windows窗体应用开发。

Cursor自动补全设置教程教你快速开启代码补全功能
Cursor自动补全设置教程教你快速开启代码补全功能

详解Cursor编辑器中自动补全功能的开启与优化设置,涵盖Tab触发机制、上下文窗口调整及模型切换,帮助开发者解决补全延迟、干扰大等问题,提升编码流畅度。

pandas的数据格式怎么转换和设置方法教程
pandas的数据格式怎么转换和设置方法教程

详解Pandas中数据格式转换的核心方法,包括astype强制转换、to_numeric容错处理及日期解析技巧,解决常见类型错误并提升数据处理效率。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)
Windows

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。