专为非运维专业的Java开发打造,聚焦部署全流程高频命令,拆解每个参数含义,让你看懂命令前缀的作用,无需死记硬背整行命令,学会组合参数即可应对99%的部署场景。
包含你示例的tar/du命令,覆盖部署全流程:环境准备、文件操作、包传输、服务启停、日志排查、问题定位、权限处理、资源监控。
一、文件与目录核心操作(部署90%场景必用)
最基础的目录跳转、文件查看/创建/复制/删除,部署前的环境准备、包替换全靠它。
1. pwd
【命令全称】Print Working Directory(打印当前工作目录)
【核心用途】确认当前所在的目录路径,避免在错误目录下执行删文件、改配置等高危操作
【部署场景示例】
# 必背:查看当前所在目录,输出如 /opt/deploy
pwd
2. cd
【命令全称】Change Directory(切换目录)
【核心用途】在不同目录间跳转,部署时在包目录、日志目录、配置目录间切换
【部署场景示例】
# 必背:切换到部署常用目录
cd /opt/deploy/
# 切换到上一级目录
cd ..
# 切换到当前用户家目录
cd ~
# 切换回上一次所在的目录
cd -
3. ls
【命令全称】List(列出目录内容)
【核心用途】查看目录下的文件/子目录,确认Jar包、配置文件、日志是否存在
【高频参数拆解】
-l:显示文件权限、所有者、大小、修改时间等完整信息-h:和-l搭配,以KB/MB/GB人类可读格式显示文件大小-a:显示所有文件,包括.开头的隐藏配置文件-t:按修改时间倒序排序,最新文件排在最前
【部署场景示例】
# 必背:查看当前目录所有文件的详细信息
ls -lh
# 查看所有文件(含隐藏文件)
ls -lha
# 按修改时间排序,快速找到最新的Jar包/日志
ls -lht
4. mkdir
【命令全称】Make Directory(创建目录)
【核心用途】创建部署目录、日志目录、备份目录,部署前环境准备必用
【高频参数拆解】
-p:递归创建多级目录,父目录不存在自动创建,无需一级一级建
【部署场景示例】
# 必背:一次性创建多级部署目录
mkdir -p /opt/deploy/app/logs
# 创建备份目录并指定权限
mkdir -m 755 /opt/deploy/backup
5. rm
【命令全称】Remove(删除)
【核心用途】清理旧Jar包、过期日志、临时文件,更新部署前环境清理必用
⚠️ 高危命令,尤其是rm -rf,绝对不要执行rm -rf /或rm -rf /*,会直接清空系统根目录!
【高频参数拆解】
-r:递归删除目录及所有子内容(删文件夹必加)-f:强制删除,不弹出确认提示(批量删除必加)-i:删除前逐个确认(新手推荐,避免误删)
【部署场景示例】
# 删除旧Jar包
rm -f app_old.jar
# 必背:强制删除过期的历史日志目录
rm -rf /opt/deploy/logs/2025*
# 清空当前目录下所有tar备份包
rm -f *.tar
6. cp
【命令全称】Copy(复制)
【核心用途】备份Jar包、配置文件、日志,更新部署前备份原包,更新失败可快速回滚
【高频参数拆解】
-r:递归复制整个目录(复制文件夹必加)-f:强制覆盖目标文件,不提示-p:保留文件原权限、所有者、修改时间(备份必加)
【部署场景示例】
# 必背:备份当前Jar包,保留原属性,更新失败可直接回滚
cp -p app.jar app.jar.bak.20260224
# 复制生产配置文件到部署目录
cp application-prod.yml /opt/deploy/application.yml
# 递归备份整个项目目录
cp -r /opt/deploy/app /opt/backup/app_bak
7. mv
【命令全称】Move(移动/重命名)
【核心用途】重命名文件、移动文件到部署目录,更新Jar包时替换原包,比cp+rm更高效
【高频参数拆解】
【部署场景示例】
# 必背:把新包替换为原包名,直接启动
mv app_new.jar app.jar
# 移动新包到部署目录并强制覆盖
mv -f /tmp/app.jar /opt/deploy/app.jar
# 把旧包移动到备份目录
mv app.jar.bak /opt/backup/
8. touch
【核心用途】创建空文件,比如创建配置文件、日志文件,修改文件的修改时间
【部署场景示例】
# 创建空的配置文件
touch application-dev.yml
# 创建空的日志文件
touch app.log
二、压缩与解压命令(部署传包/备份核心)
你示例的tar命令所在分类,跨服务器传文件、备份数据、解压安装包必用,重点拆解每个参数含义,再也不用死记硬背组合。
1. tar
【命令全称】Tape Archive(磁带归档,现用于打包压缩)
【核心用途】部署场景用于打包备份项目数据、日志、配置文件,解压安装包、项目包,跨服务器传文件前必备
【高频参数拆解(前缀含义,必背)】
| 参数 | 全称 | 核心作用 | 注意事项 |
|---|
-c | create | 创建新的打包文件 | 打包必加,和-x互斥 |
-x | extract | 解压打包文件 | 解压必加,和-c互斥 |
-v | verbose | 显示打包/解压的过程 | 可选,看进度用 |
-f | file | 指定打包/解压的文件名 | 必加,必须放在所有参数的最后面,后面紧跟文件名 |
-z | gzip | 用gzip格式压缩/解压 | 对应后缀.tar.gz |
-j | bzip2 | 用bzip2格式压缩/解压 | 对应后缀.tar.bz2 |
-C | directory | 指定解压到的目标目录 | 解压到指定路径必加 |
| 【部署场景示例】 | | | |
# 你的示例:把data目录打包成data_20260211.tar,显示打包过程
tar -cvf data_20260211.tar data
# 必背:打包并gzip压缩项目目录,最常用的传包格式
tar -zcvf app_20260224.tar.gz app/
# 解压tar包到当前目录
tar -xvf data_20260211.tar
# 必背:解压tar.gz包到指定部署目录
tar -zxvf app_20260224.tar.gz -C /opt/deploy/
2. zip/unzip
【核心用途】处理zip格式压缩包,Windows和Linux通用,部署时处理从本地上传的zip包常用
【高频参数拆解】
- zip
-r:递归压缩目录及所有子内容 - unzip
-d:指定解压到的目标目录
【部署场景示例】
# 压缩项目目录为zip包
zip -r app.zip app/
# 解压zip包到当前目录
unzip app.zip
# 解压zip包到指定部署目录
unzip app.zip -d /opt/deploy/
三、磁盘与空间查看命令(磁盘满了/空间排查必用)
你示例的du命令所在分类,部署时经常遇到磁盘满了导致日志无法写入、服务启动失败,用这两个命令快速定位问题。
1. du
【命令全称】Disk Usage(磁盘使用情况)
【核心用途】查看指定目录/文件的磁盘占用大小,排查哪个目录/文件占满了磁盘,清理日志、备份包必备
【高频参数拆解(前缀含义,必背)】
| 参数 | 全称 | 核心作用 |
|---|
-h | human-readable | 以KB/MB/GB人类可读格式显示大小,必加(默认显示块数,看不懂) |
--max-depth=N | 最大深度 | 指定目录的显示层级,N=1就是只看当前目录下的一级子目录大小 |
-s | summary | 只显示指定目录的总大小,不显示子目录 |
| 【部署场景示例】 | | |
# 你的示例:查看当前目录下一级子目录的大小,完美排查哪个文件夹占空间
du -h --max-depth=1 ./
# 必背:查看当前目录总大小
du -sh ./
# 查看指定日志文件大小
du -h app.log
# 进阶:按大小从大到小排序,快速定位大文件
du -h --max-depth=1 ./ | sort -hr
2. df
【命令全称】Disk Free(磁盘空闲情况)
【核心用途】查看系统磁盘分区的整体使用率、剩余空间,快速排查磁盘是否满了,和du搭配使用
【高频参数拆解】
-h:人类可读格式显示大小,必加-i:查看inode使用率(磁盘没满但无法写文件,大概率是inode满了)
【部署场景示例】
# 必背:查看所有磁盘分区的使用情况,快速看哪个盘满了
df -h
# 查看inode使用情况
df -i
四、进程与服务管理(Java服务启停/排查核心)
Java开发部署最核心的分类,服务启动、停止、重启、查看是否运行,全靠这些命令,必背率100%。
1. jps
【命令全称】JVM Process Status Tool(JVM进程状态工具)
【核心用途】JDK自带,专门查看当前系统运行的Java进程,比ps更精准,不会把grep命令本身算进去,Java部署专属必背
【高频参数拆解】
-l:显示Java进程的完整包名/启动Jar包的完整路径(最常用)-v:显示JVM启动参数
【部署场景示例】
# 必背:查看所有Java进程PID和Jar包路径,杀进程、确认服务是否启动必用
jps -l
# 查看Java进程+JVM启动参数
jps -v
2. ps
【命令全称】Process Status(进程状态)
【核心用途】查看系统所有运行的进程,查找Java服务的进程ID(PID),确认服务是否启动
【高频参数拆解】
-e:显示所有进程-f:显示完整的进程信息(UID、PID、启动时间、完整命令等,必加)
【部署场景示例】
# 必背:查找所有Java进程,过滤出PID和启动命令
ps -ef | grep java
# 查找指定PID的进程详情
ps -ef | grep 12345
# 排除grep自身,只保留Java进程
ps -ef | grep java | grep -v grep
3. kill
【命令全称】Kill(终止进程)
【核心用途】停止Java服务、终止异常进程,重启服务前必用
【高频参数拆解】
-15:优雅终止进程(默认),进程会先释放资源再退出,优先使用-9:强制终止进程,进程无法忽略,卡死的进程必用
【部署场景示例】
# 优雅终止Java进程,12345是jps查到的PID
kill 12345
# 必背:强制终止卡死的Java进程
kill -9 12345
# 进阶:批量终止指定Jar包的Java进程
ps -ef | grep app.jar | grep -v grep | awk '{print $2}' | xargs kill -9
4. nohup
【命令全称】No Hang Up(不挂断)
【核心用途】后台启动Java服务,关闭终端后进程不会被终止,SpringBoot/Jar包部署的核心命令,必背
【参数拆解】
&:把命令放到后台执行> 文件名:把标准输出重定向到文件2>&1:把错误输出也重定向到和标准输出同一个文件
【部署场景示例】
# 必背:后台启动SpringBoot Jar包,生产环境标准写法
nohup java -jar app.jar --spring.profiles.active=prod > app.log 2>&1 &
5. systemctl
【命令全称】System Control(系统控制)
【核心用途】管理系统服务的启动、停止、重启、开机自启,部署时启停MySQL、Redis、Nginx、Docker等基础服务必用
【高频参数拆解】
start:启动服务stop:停止服务restart:重启服务status:查看服务运行状态enable:设置服务开机自启disable:取消服务开机自启
【部署场景示例】
# 必背:查看Nginx服务运行状态
systemctl status nginx
# 启动Redis服务
systemctl start redis
# 重启MySQL服务
systemctl restart mysqld
# 设置Docker开机自启
systemctl enable docker
五、日志与文件内容查看(问题排查100%必用)
部署完服务必看日志,排查启动报错、接口异常、业务问题,这些命令是排查问题的核心,每天都会用。
1. tail
【命令全称】Tail(尾部)
【核心用途】查看文件的末尾内容,实时跟踪Java服务的运行日志,排查问题最常用的命令
【高频参数拆解】
-f:实时跟踪文件的新增内容(看实时日志必加)-n N:显示文件的最后N行内容-F:文件被删除重建后自动重新跟踪(日志滚动时用)
【部署场景示例】
# 必背:实时查看Java服务运行日志
tail -f app.log
# 必背:查看日志最后1000行并实时跟踪,启动服务时看是否启动成功
tail -1000f app.log
# 实时查看日志,只过滤ERROR错误信息,快速定位问题
tail -f app.log | grep 'ERROR'
2. grep
【命令全称】Global Regular Expression Print(全局正则表达式打印)
【核心用途】过滤文本内容,匹配关键词,和其他命令搭配使用,高频中的高频,过滤日志、进程、端口信息全靠它
【高频参数拆解】
-i:忽略大小写匹配-v:反向匹配,排除包含关键词的内容-n:显示匹配内容的行号-r:递归搜索目录下的所有文件
【部署场景示例】
# 过滤日志中的ERROR错误信息
grep 'ERROR' app.log
# 忽略大小写查找日志中的exception异常
grep -i 'exception' app.log
# 递归查找当前目录下所有包含jdbc的配置文件
grep -r 'jdbc' ./ --include="*.yml" --include="*.properties"
3. less
【核心用途】分页查看大日志文件,支持上下翻页、搜索高亮,比cat、more更强大,查看GB级大日志首选
【高频操作】
- 上下箭头:上下翻行
- PageUp/PageDown:上下翻页
/关键词:向下搜索,n跳转到下一个匹配项,N跳转到上一个?关键词:向上搜索q:退出
【部署场景示例】
# 必背:查看大日志文件
less app.log
# 查看日志并直接跳转到最后一行
less +G app.log
4. cat
【命令全称】Concatenate(连接)
【核心用途】查看小文件的全部内容,拼接文件,部署时查看配置文件、短日志常用
【高频参数拆解】
【部署场景示例】
# 必背:查看配置文件内容
cat application.yml
# 查看文件内容并显示行号
cat -n app.log
5. head
【命令全称】Head(头部)
【核心用途】查看文件的开头内容,看配置文件头部、日志启动信息常用
【高频参数拆解】
【部署场景示例】
# 查看配置文件的前20行
head -n 20 application.yml
# 查看日志的前100行启动信息
head -100 app.log
六、权限管理命令(部署权限报错必用)
部署时最常见的报错Permission denied,全靠这两个命令解决,必背核心用法。
1. chmod
【命令全称】Change Mode(更改文件权限)
【核心用途】修改文件/目录的读写执行权限,给Jar包、启动脚本加执行权限,解决权限不足报错
【权限基础(必背)】
- 权限分为3组:所有者(u)、所属组(g)、其他用户(o)
- 权限对应数字:r=读(4)、w=写(2)、x=执行(1)
- 常用数字权限:
- 755:所有者可读可写可执行,其他用户可读可执行(Jar包、脚本常用)
- 644:所有者可读可写,其他用户只读(配置文件、日志常用)
- 777:所有用户全权限(慎用,仅测试环境用)
【高频参数拆解】
【部署场景示例】
# 必背:给Jar包加执行权限
chmod 755 app.jar
# 给启动脚本加执行权限(简化写法)
chmod +x start.sh
# 递归修改部署目录的权限
chmod -R 755 /opt/deploy/
# 给配置文件设置只读权限
chmod 644 application.yml
2. chown
【命令全称】Change Owner(更改所有者)
【核心用途】修改文件/目录的所属用户和组,解决普通用户启动服务时的文件读写权限问题
【高频参数拆解】
【部署场景示例】
# 修改Jar包的所属用户和组为deploy
chown deploy:deploy app.jar
# 必背:递归修改部署目录的所属用户,适配普通用户启动服务
chown -R deploy:deploy /opt/deploy/
七、网络与端口排查命令(服务连不上/端口不通必用)
Java服务部署完,前端/第三方连不上,大概率是端口、网络、防火墙问题,用这些命令快速定位。
1. ss/netstat
【命令全称】Socket Statistics/Network Statistics(套接字/网络统计)
【核心用途】查看端口监听情况、网络连接,排查Java服务端口是否被占用、是否成功启动监听
说明:ss是netstat的升级版,系统默认都支持,用法几乎一致,优先用ss
【高频参数拆解】
-t:显示TCP协议连接-u:显示UDP协议连接-l:只显示正在监听的端口-p:显示占用端口的进程名和PID(必加)-n:数字形式显示IP和端口,不解析域名,加快速度
【部署场景示例】
# 必背:查看所有监听的TCP端口和对应进程
ss -tulpn
# 必背:查看8080端口是否被占用,Java服务启动失败必查
ss -tulpn | grep 8080
# 兼容写法,netstat版本
netstat -tulpn | grep 8080
2. telnet
【核心用途】测试服务器指定端口是否通,排查防火墙、网络策略是否放开,服务端口能不能访问
【部署场景示例】
# 必背:测试本地8080端口是否通,能连上说明服务启动正常、端口开放
telnet 127.0.0.1 8080
# 测试远程服务器MySQL端口是否通
telnet 192.168.1.100 3306
3. curl
【命令全称】Client URL(客户端URL工具)
【核心用途】发送HTTP/HTTPS请求,测试Java服务接口是否正常、配置是否生效,也可用于下载安装包
【高频参数拆解】
-X:指定请求方法(GET/POST/PUT/DELETE)-H:指定请求头-d:指定POST请求体
【部署场景示例】
# 必背:测试服务健康检查接口,确认服务是否启动成功
curl http://127.0.0.1:8080/health
# 发送POST请求测试业务接口
curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' http://127.0.0.1:8080/api/test
4. ping
【核心用途】测试本地和远程服务器的网络连通性,排查服务器连不上的基础网络问题
【高频参数拆解】
【部署场景示例】
# 必背:测试和远程服务器的网络连通性,发4个包
ping -c 4 192.168.1.100
# 测试服务器外网连通性
ping -c 4 www.baidu.com
八、系统资源监控命令(服务卡顿/资源不足排查)
服务卡顿、CPU占用过高、内存泄漏、OOM报错,用这些命令快速定位问题。
1. top
【命令全称】Table of Processes(进程表)
【核心用途】实时查看系统CPU、内存占用情况,进程资源排名,排查服务卡顿、资源占用过高问题
【高频操作】
- 进入top后按
P:按CPU使用率排序 - 按
M:按内存使用率排序 - 按
1:显示所有CPU核心的使用率 - 按
q:退出
【部署场景示例】
# 必背:查看系统整体资源和进程占用情况
top
# 只看指定Java进程的资源占用
top -p 12345
2. free
【命令全称】Free(空闲内存)
【核心用途】查看系统内存、Swap分区的使用情况,排查内存不足导致的服务OOM、卡顿问题
【高频参数拆解】
【部署场景示例】
# 必背:查看系统内存使用情况
free -h
九、跨服务器文件传输/文件查找命令
1. scp
【命令全称】Secure Copy(安全复制)
【核心用途】基于SSH的跨服务器文件/目录复制,本地和服务器之间传输Jar包、配置文件,无需额外工具
【高频参数拆解】
-r:递归复制整个目录(传文件夹必加)-P:指定SSH端口,默认22,非默认端口必加
【部署场景示例】
# 必背:本地传Jar包到服务器部署目录
scp /本地路径/app.jar root@192.168.1.100:/opt/deploy/
# 从服务器下载日志文件到本地
scp root@192.168.1.100:/opt/deploy/app.log /本地路径/
# 传整个项目目录到服务器
scp -r /本地路径/app/ root@192.168.1.100:/opt/deploy/
2. find
【命令全称】Find(查找)
【核心用途】在指定目录下递归查找文件/目录,找不到配置文件、日志文件、Jar包时必用
【高频参数拆解】
-name:按文件名查找,支持通配符*-type f:只查找文件,-type d只查找目录-mtime -N:查找N天内修改过的文件-size +NM:查找大于N MB的文件
【部署场景示例】
# 必背:在根目录下查找所有.yml配置文件
find / -name "*.yml" -type f
# 查找当前目录下所有.jar文件
find ./ -name "*.jar" -type f
# 查找/opt目录下大于1G的大文件
find /opt -size +1G -type f
3. wget
【核心用途】从网络下载文件,部署时下载JDK、MySQL、Redis等安装包必用
【高频参数拆解】
-O:指定下载后的文件名-c:断点续传,大文件下载中断后可继续下载
【部署场景示例】
# 必背:下载JDK安装包到当前目录
wget https://xxx.com/jdk-8u301-linux-x64.tar.gz
# 断点续传下载大文件
wget -c https://xxx.com/centos7.iso
十、其他高频实用命令
1. history
【核心用途】查看之前执行过的命令,快速找回复杂命令,不用重复输入
【部署场景示例】
# 必背:查看所有历史命令
history
# 查找之前执行过的java相关命令
history | grep java
# 执行最近一条nohup开头的命令
!nohup
2. sudo
【命令全称】Super User Do(超级用户执行)
【核心用途】以root管理员权限执行命令,普通用户执行安装软件、修改系统配置等操作时用,不用切换root用户
【部署场景示例】
# 必背:以root权限安装net-tools工具
sudo yum install -y net-tools
# 以root权限修改hosts配置文件
sudo vi /etc/hosts
# 切换到root用户
sudo su -
3. which/whereis
【核心用途】查找命令的安装路径,确认JDK、MySQL等环境变量是否配置正确
【部署场景示例】
# 必背:查找java命令的路径,确认JDK环境是否正常
which java
# 查找java的所有相关路径(可执行文件、源码、帮助文档)
whereis java
部署高频命令速记表(直接抄)
| 场景 | 必背命令 |
|---|
| 启动SpringBoot服务 | nohup java -jar app.jar --spring.profiles.active=prod > app.log 2>&1 & |
| 查看Java进程 | jps -l / `ps -ef |
| 停止Java服务 | kill -9 进程PID |
| 实时看日志 | tail -f app.log / tail -1000f app.log |
| 看端口占用 | `ss -tulpn |
| 测试端口连通性 | telnet 127.0.0.1 8080 |
| 测试服务是否启动 | curl http://127.0.0.1:8080/health |
| 看磁盘空间 | df -h / du -h --max-depth=1 ./ |
| 打包/解压 | tar -zcvf app.tar.gz app/ / tar -zxvf app.tar.gz |
| 传文件到服务器 | scp app.jar root@服务器IP:/opt/deploy/ |