商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Java后端必会Linux常用命令之一篇搞懂日志、进程、端口、部署

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

  发布于2026-07-01 阅读(0)

扫一扫,手机访问

前言

对于 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.outtail -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 命令,最终目的不是死记硬背,而是为了在项目出问题时,能快速找到症结、解决问题。

本文转载于:https://www.jb51.net/program/364079wy3.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注