linux
📌 模块一:Linux 系统基础与进程管理(高频核心)
1. 核心命令与肌肉记忆
文件与目录操作:
cd -:切换回上一次所在的目录(切错目录时极其有用)。ls -lah:查看当前目录下所有文件的详细信息(包括隐藏文件和大小)。mkdir -p /data/nginx/logs:递归创建多级目录。cp -a source dest:归档复制,连同文件属性(权限、时间等)一起复制。
文件查看与编辑:
vim三板斧:打开文件 ➡ 按i进入编辑 ➡ 按Esc退出编辑 ➡ 输入:wq保存退出(放弃修改输入:q!)。tail -f /var/log/nginx/error.log:(运维核心技能) 实时滚动查看日志最新内容。grep -i "error" app.log:在日志中不区分大小写查找 “error” 关键字。find / -name "*.conf":全盘查找后缀为.conf的文件。
系统排查三板斧(性能优化/故障排查):
top或htop:查看系统整体 CPU、内存负载及当前消耗资源最高的进程。df -h:查看磁盘空间占用情况,防止磁盘满了导致服务崩溃。free -h:查看当前内存使用及剩余情况(关注available才是真实可用内存)。ps -ef | grep mysql:查看 MySQL 进程是否存在、获取其进程号 (PID)。kill -9 PID:强行杀死指定的进程(生产环境慎用,优先使用常规停止命令)。
2. 用户与权限管理
chmod 755 script.sh:赋予脚本所有者“读写执行”权限,所属组和其他人“读与执行”权限。chown -R nginx:nginx /var/www/html:递归修改目录的所有者和所属组为nginx。
🧠 回忆快问快答(自测专用)
问: 服务突然卡死,第一步看什么?
- 答: 先用
top看 CPU/内存,再用df -h看磁盘是不是满了,同时用tail -f盯着服务日志。
- 答: 先用
问: 修改了一个配置文件,为了保险起见,修改前应该做什么?
- 答: 必须先备份!例如
cp nginx.conf nginx.conf.bak_$(date +%F)。
- 答: 必须先备份!例如
📌 模块二:Nginx 服务部署与反向代理(Web核心)
1. 核心概念理解
反向代理(Reverse Proxy): 客户端直接访问 Nginx(暴露公网),Nginx 作为“代理人”去访问内网的真实后端服务(如 Java、Go、PHP),然后把结果返回给客户端。保护内网安全,方便做负载均衡。
负载均衡(Load Balancing): 当后端有多台服务器时,Nginx 将请求按一定规则分发。
轮询 (Round Robin):默认,按时间顺序逐一分发。权重 (Weight):根据服务器性能分配比例,性能好的机器权重高。ip_hash:每个访客固定访问一个后端服务器,解决 Session 共享问题。
2. 极简 Nginx 核心配置模板
配置文件通常在 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 目录下。
Nginx
1 | # 1. 定义后端服务器集群(负载均衡) |
3. Nginx 常用命令
nginx -t:(极其重要) 修改配置后,先检查语法是否正确,看到syntax is ok才能重启。systemctl nginx reload:热加载配置(平滑重启),不中断现有线上用户的访问。systemctl restart nginx:强制重启 Nginx 服务。
🧠 回忆快问快答(自测专用)
问: 访问网页显示
502 Bad Gateway,一般是谁的问题?怎么排查?- 答: 通常是 Nginx 后面挂接的后端服务(如 Tomcat/Docker容器/Java程序)挂了或者端口没开。排查思路:先看 Nginx 错误日志,再去确认后端服务状态和端口连通性。
问: 访问网页显示
403 Forbidden,是什么原因?- 答: 权限问题。要么是 Nginx 没权限读取静态资源目录(检查
chmod),要么是 SELinux 限制,或者是配置里写了deny拒绝了该 IP。
- 答: 权限问题。要么是 Nginx 没权限读取静态资源目录(检查
📌 模块三:Shell 脚本自动化与定时任务(效能利器)
1. Shell 语法高频速记
变量定义:
PID=$(pgrep nginx)(把命令执行结果赋值给变量,注意等号两边不能有空格)。条件判断(注意方括号两边的空格):
Bash
1
2
3
4
5if [ -z "$PID" ]; then
echo "Nginx is stopped!"
else
echo "Nginx is running with PID: $PID"
fi常用判断条件:
-d(目录是否存在)、-f(文件是否存在)、-z(字符串是否为空)。
2. 生产级:自动化监控与服务自愈脚本模板
创建一个 monitor.sh 脚本,用来监控 Nginx,挂了自动拉起。
Bash
1 | #!/bin/bash |
3. Crontab 定时任务配置
输入 crontab -e 进入编辑:
语法格式:
分 时 日 月 周 /path/to/command高频示例:
*/5 * * * * /bin/bash /root/monitor.sh:每隔 5 分钟执行一次监控脚本。0 2 * * * /bin/bash /data/backup.sh:每天凌晨 2:00 执行备份脚本。
🧠 回忆快问快答(自测专用)
问: 手动执行脚本成功,但放进
crontab定时任务里就不执行或报错,为什么?- 答: 环境变量/绝对路径问题。
crontab执行时的环境变量非常干净。解决方法:脚本里的命令一律用绝对路径(如/usr/bin/tar),或者在脚本开头加上source /etc/profile。
- 答: 环境变量/绝对路径问题。
📌 模块四:Docker 容器技术(微服务必备)
1. 核心概念记忆
镜像 (Image): 静态的只读模板(相当于类,或者软件安装包)。
容器 (Container): 镜像运行后的实例(相当于对象,或者跑起来的软件)。容器之间是相互隔离的。
2. 高频必会命令
镜像管理:
docker pull nginx:alpine:从远程仓库拉取精简版 Nginx 镜像。docker images:查看本地已有的镜像。docker rmi 镜像ID:删除本地镜像。
容器生命周期管理:
docker run -d --name my_web -p 8080:80 -v /data/html:/usr/share/nginx/html nginx-d:后台运行。--name:指定容器名为my_web。-p 8080:80:将宿主机的 8080 端口映射到容器内部的 80 端口。-v:把宿主机的目录挂载到容器内部(数据持久化,修改宿主机文件容器内立即生效)。
docker ps:查看当前正在运行的容器。docker ps -a:查看所有容器(包括已停止的)。docker stop/start/restart 容器ID或名称:停止/启动/重启容器。docker rm -f 容器ID:强制删除正在运行的容器。
容器排查二板斧(入职天天用):
docker logs -f --tail 100 容器名:查看某个容器的最后 100 行日志并持续滚动。docker exec -it 容器名 /bin/bash(或/bin/sh):进入容器内部的黑窗口进行操作。
📌 模块五:MySQL 数据库管理(数据命脉)
1. 高频 SQL 增删改查基操
连接数据库:
mysql -u root -p查库:
SHOW DATABASES;用库:
USE demo_db;查表数据:
SELECT * FROM users WHERE status = 1 ORDER BY create_time DESC LIMIT 10;更新数据:
UPDATE users SET status = 0 WHERE id = 5;(生产环境修改数据一定要带 WHERE 条件!)
2. 数据备份与恢复
物理/逻辑备份(使用 mysqldump):
- 备份整个数据库:
mysqldump -u root -p demo_db > /data/backup/demo_db_$(date +%F).sql
- 备份整个数据库:
数据恢复:
mysql -u root -p demo_db < /data/backup/demo_db_2026-06-11.sql
3. 主从复制基本原理(面试必问)
核心逻辑: 靠 Binlog(二进制日志) 实现。
主库(Master):把所有修改数据库的语句记录到
Binlog中。从库(Slave):通过
I/O 线程连接主库,读取Binlog并写入到本地的Relay Log(中继日志)中。从库(Slave):通过
SQL 线程读取Relay Log,把里面的 SQL 语句在本地重新执行一遍(重放),从而保持数据一致。
📌 模块六:网络协议与排查(底层支撑)
1. 核心状态码与网络工具
常见 HTTP 状态码:
200 OK:成功。301/302:永久/临时重定向。403 Forbidden:服务器拒绝请求(通常是权限问题)。404 Not Found:找不到资源(路径写错了)。502 Bad Gateway:网关错误(后端服务挂了)。504 Gateway Timeout:网关超时(后端处理太慢,Nginx 等不及了)。
网络排查常用工具:
ping 114.114.114.114:测试网络连通性。telnet 192.168.1.10 3306:(极其高频) 测试某台服务器的某个端口是否开放、是否能连通。curl -I https://www.google.com:仅查看网站返回的 HTTP 响应头状态码。netstat -tpln或ss -tpln:查看当前系统本地开启了哪些端口,分别被哪些进程占用了。