Java 后端必会 Linux 常用命令总结:日志、进程、端口、部署一篇搞懂
Linux 命令对于 Java 后端开发来说非常重要。实际工作中,我们不一定要记住所有 Linux 命令,但是一些高频命令必须熟悉,比如文件操作、日志查看、进程管理、端口排查、项目部署、磁盘和内存查看、权限修改。尤其是部署 Spring Boot 项目、查看线上日志、排查端口占用、分析服务器资源这些场景,基本每天都会遇到。所以学习 Linux 命令,不是为了背命令,而是为了在项目出问题时,能够快速
对于 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 命令,不是为了背命令,而是为了在项目出问题时,能够快速定位问题、解决问题。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)