对于 Java 后端开发来说,Linux 是绕不开的。

平时我们写完 Spring Boot 项目之后,最终大概率还是要部署到 Linux 服务器上。项目上线之后,如果接口报错、服务启动失败、端口被占用、日志文件太大、磁盘空间不足,基本都需要通过 Linux 命令去排查。

所以 Linux 命令不是运维才需要会,Java 后端也必须掌握一些高频命令。

这篇文章主要总结后端开发中最常用的一些 Linux 命令,不追求大而全,重点放在实际开发和部署场景中怎么用。

一、目录和文件相关命令

1. 查看当前目录

pwd

pwd 用来查看当前所在目录。

比如登录服务器之后,不确定自己在哪个路径下,就可以先执行:

pwd

2. 查看目录文件

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/app

4. 创建目录

mkdir logs
mkdir -p /opt/app/logs

mkdir 用来创建目录。

如果要一次性创建多级目录,可以使用:

mkdir -p /opt/app/logs

5. 创建文件

touch app.log
touch application.yml

touch 可以用来创建一个空文件。

比如创建日志文件:

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 既可以移动文件,也可以重命名文件。

比如把日志文件重命名:

mv nohup.out nohup-2026-05-08.out

8. 删除文件或目录

rm app.log
rm -rf logs/

注意:

rm -rf

这个命令要谨慎使用,尤其不要在根目录或者不确定的目录下乱执行。

二、查看文件内容

1. 查看整个文件

cat app.log

cat 适合查看内容比较少的文件。

如果日志文件很大,不建议直接使用 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

查看最后 100 行日志:

tail -n 100 app.log

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

比如排查空指针异常:

grep "NullPointerException" app.log

2. 显示行号

grep -n "ERROR" app.log

-n 可以显示匹配内容所在的行号。

3. 忽略大小写

grep -i "error" app.log

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. 查看 Java 进程

ps -ef | grep java

这是部署 Java 项目时非常常用的命令。

比如查看 Spring Boot 项目是否正在运行:

ps -ef | grep app.jar

3. 使用 jps 查看 Java 进程

ps -ef

jps 是 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 8080

2. 使用 lsof 查看端口

lsof -i:8080

比如 Spring Boot 启动失败,提示 8080 端口被占用,可以执行:

lsof -i:8080

然后根据查到的 PID 结束进程:

kill -9 进程ID

3. 使用 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 2>&1 &

这是非常常见的 Spring Boot 后台启动命令。

解释一下:

nohup:表示不挂断运行

java -jar app.jar:启动 jar 包

> nohup.out:标准输出写入 nohup.out

2>&1:错误输出也写入 nohup.out

&:后台运行

启动后可以查看日志:

tail -f nohup.out

3. 指定配置文件启动

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

表示使用 prod 环境配置启动。

4. 指定端口启动

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

5. 指定 JVM 参数启动

nohup java -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 *

查看 logs 目录大小:

du -sh logs/

5. 查看系统负载

uptime

可以查看系统运行时间和平均负载。

八、压缩和解压命令

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/

比如:

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

查看 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 *
后台启动 jar nohup java -jar app.jar > nohup.out 2>&1 &
解压 tar.gz tar -zxvf app.tar.gz
压缩目录 tar -zcvf logs.tar.gz logs/
上传文件 scp app.jar root@服务器IP:/opt/app/

总结

Linux 命令对于 Java 后端开发来说非常重要。

实际工作中,我们不一定要记住所有 Linux 命令,但是一些高频命令必须熟悉,比如文件操作、日志查看、进程管理、端口排查、项目部署、磁盘和内存查看、权限修改。

尤其是部署 Spring Boot 项目、查看线上日志、排查端口占用、分析服务器资源这些场景,基本每天都会遇到。

所以学习 Linux 命令,不是为了背命令,而是为了在项目出问题时,能够快速定位问题、解决问题。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐