TECH NOTES / 部署与运维
Linux 学习路径:从命令行到部署一个服务
整理于 2026-10-05
本次新增整理 · 2026-10-05。原笔记只有标题,这篇重新整理了一条面向 Java 后端开发者的实践路线。
刚开始学 Linux,容易陷入一个误区:先找一份命令大全,从第一条背到最后一条。背的时候觉得会了,真正连上服务器,还是不知道从哪里下手。
我的建议是先定一个小目标:把自己的一个服务部署起来,能看日志、查端口、定位失败原因,再把它停下来。 命令围绕这个目标去学,会更容易记住。
1. 先准备一台可以反复折腾的练习机
选一个维护中的 Linux 发行版,在本地虚拟机里安装,给自己建一个普通用户。Windows 也可以从 WSL 开始熟悉命令行;涉及开机启动、网络和防火墙的练习,最好再用完整虚拟机核对一次。
先认识三个目录:~ 是当前用户的主目录,/etc 通常存放系统配置,/var/log 常用于保存日志。不要一上来就修改系统目录,自己的实验统一放到 ~/linux-lab。
mkdir -p ~/linux-lab/logs
cd ~/linux-lab
pwd
whoami
cat /etc/os-release检查点:关掉终端再打开,能独立回到这个目录,并说明自己使用的是哪个发行版。Ubuntu 的命令行入门教程可以配合练习。
2. 第一周:文件操作和文本查看
先熟悉 pwd、ls、cd、mkdir、cp、mv,再学习 cat、less、head、tail 和 grep。重点是弄懂绝对路径、相对路径,以及引号的作用。
用一份自己生成的日志练习:
cd ~/linux-lab
printf 'INFO application started\nERROR database timeout\nINFO request finished\n' > logs/app.log
cat logs/app.log
grep -n 'ERROR' logs/app.log
tail -n 20 logs/app.log
less logs/app.log在 less 中用 /ERROR 搜索,按 n 跳到下一处,按 q 退出。这里的 > 会覆盖同名文件,>> 才是追加,写日志和写配置之前要分清楚。
再试着用 Vim 修改一个练习文件:i 进入插入模式,Esc 回到普通模式,:wq 保存退出,:q! 放弃本次修改。先做到能改、能保存、能退出,再慢慢学移动和批量编辑。
检查点:不依赖图形界面,找到日志中的错误行,并把前后几行一起读懂。可以继续看本站的 Vim 查看日志。
3. 第二周:权限、进程和资源
“文件明明存在,为什么运行不了?”“端口明明写在配置里,为什么访问不到?”这类问题通常要从权限和进程查起。
| 要解决的问题 | 先学的工具 | 需要看懂什么 |
|---|---|---|
| 谁可以读写文件 | ls -l、id、chmod |
所有者、用户组、读写执行权限 |
| 哪个进程在运行 | ps、top |
PID、启动命令、CPU 和内存占用 |
| 磁盘还剩多少 | df -h、du -sh |
文件系统容量与目录占用的区别 |
| 程序监听了什么 | ss -lntp |
监听地址、端口、关联进程 |
id
ls -l ~/linux-lab/logs/app.log
ps -ef
df -h
du -sh ~/linux-lab
ss -lntp查看别的用户启动的进程信息可能需要相应权限。遇到权限问题,先检查路径和所有者,再决定是否需要 sudo,不要用 chmod -R 777 作为通用修复方式。
练习结束时,尝试找到一个自己启动的测试进程,确认 PID 后用 kill -TERM PID 请求正常退出。理解“请求退出”和“强制终止”的区别,比记住 kill -9 更有用。
4. 第三周:网络与服务排错
把访问链路拆开看:客户端 → 网络与防火墙 → 监听端口 → 应用 → 数据库等依赖。浏览器打不开页面,并不一定是应用代码的问题。
假设应用应该监听本机的 8080 端口:
ip addr
ip route
ss -lntp
curl -v --connect-timeout 3 http://127.0.0.1:8080/按顺序判断:
- 没有监听端口:先看启动日志,确认进程有没有退出。
- 本机能访问、其他机器不能访问:检查监听地址、主机防火墙和云平台安全组。
- 收到 HTTP 404:说明已经连到 HTTP 服务,要继续核对路径和路由。
- 收到 HTTP 500:回到应用日志,找出本次请求对应的异常。
配置防火墙时,先确定发行版使用的是哪套工具。本站的 firewalld 端口笔记只适用于使用 firewalld 的机器;ss 显示监听并不能证明防火墙已放行。
5. 第四周:部署一个自己的 Java 服务
选择一个不含业务数据的小项目,打包成 Jar,复制到练习机。准备一个明确的健康检查接口,先以前台方式启动,直接观察日志。
java -version
java -jar demo.jar --server.port=8080在另一个终端用 curl 请求你实际实现的接口。确认启动、访问和停止都正常之后,再学习 systemd 的服务管理。
在以 systemd 管理服务的机器上,下面几条命令分别用于查看状态、查看近期日志和跟踪新日志。demo.service 是你自己配置的服务名,系统不会自动生成这个服务。
systemctl status demo.service
journalctl -u demo.service -n 100 --no-pager
journalctl -u demo.service -f配置服务时要明确运行用户、工作目录、Java 的绝对路径和重启策略。先学习 systemctl 与 journalctl 的手册,再做自动启动;密码与密钥通过受控配置提供,不要提交到代码仓库。
最后用 Nginx 把请求转发到应用,理解“域名与入口端口”和“后端监听端口”的区别。可以从本站 Nginx 笔记中的反向代理部分开始。
6. 用一次故障演练检查自己是否学会
只在练习机上做下面三个实验,每次只改变一个条件:
- 把启动端口换掉,观察旧地址和新地址的响应。
- 把配置文件路径写错,从启动日志里定位具体错误。
- 正常停止服务,再通过进程、端口、日志三种方式确认状态。
每个问题留下四行记录:现象、证据、原因、修复步骤。不要只记“重启好了”,还要说清楚重启前看到了什么。
7. 基础过关之后,再补哪些内容
能独立部署和排错以后,再补 Shell 脚本、管道、重定向、定时任务、日志轮转、SSH 密钥、备份与恢复。然后根据工作需要进入容器、监控或性能分析,不用同时铺开所有方向。
给自己留一个最终作业:把练习服务从一台全新的虚拟机部署起来,写出别人也能复现的操作记录,并演示一次恢复过程。如果能做到这一步,Linux 就已经从“命令列表”变成了能解决问题的工具。