故障案例复盘:磁盘 100%、CPU 飙高与 SSH 连不上

故障处理的价值不在"修好",而在"下次更快修好、甚至不再发生"。这篇复盘三个高频故障的定位思路。 通用排查方法论 确认现象 → 看日志 → 提假设 → 验证 → 定位根因 → 修复 → 预防 别一上来就重启(重启会抹掉现场,根因没找到下次还会复发)。 案例一:磁盘 100% 现象 写入报 “No space left on device”,df -h 显示 100%。 定位 df -h # 确认哪个分区满了 sudo du -sh /* 2>/dev/null | sort -rh | head -20 # 根目录谁占最多 # 逐层下钻,直到找到元凶目录 sudo du -sh /var/log/* | sort -rh | head 三个经典原因 日志疯涨:/var/log 下某个日志没切割,无限增长 → logrotate 或清空。 大文件:备份、临时文件、上传文件堆积。 文件删了但没释放空间(最常见陷阱): sudo lsof +L1 | grep deleted # 找到"已删除但仍被进程占用"的文件 # 重启对应进程即可释放 磁盘满了,df 和 du 对不上,基本都是第 3 种情况。 ...

August 15, 2026 · 2 min · 248 words · Pilote Chen

MySQL 与 Redis 基础运维

数据库和中间件是跑业务的核心,初级运维至少要会:建库授权、看慢查询、备份恢复、看 Redis 内存和持久化。 一、MySQL 建库与用户授权 mysql -u root -p -- 建库(utf8mb4,支持 emoji) CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4; -- 建用户 CREATE USER 'app'@'%' IDENTIFIED BY '强密码'; -- 授权:只给 mydb 的权限 GRANT ALL PRIVILEGES ON mydb.* TO 'app'@'%'; -- 生效 FLUSH PRIVILEGES; 'app'@'%' 的 % 表示任意来源;生产建议收紧到具体 IP 或内网网段,别轻易用 %。 常用查看: SHOW DATABASES; SHOW TABLES; SELECT user, host FROM mysql.user; 二、慢查询 先开启慢查询日志(/etc/mysql/mysql.conf.d/mysqld.cnf): slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 # 超过 1 秒记日志 sudo systemctl restart mysql sudo tail -f /var/log/mysql/slow.log # 实时看 sudo mysqldumpslow -s t -t 10 /var/log/mysql/slow.log # 汇总最慢的 10 条 看到慢 SQL 后,检查是否缺索引(EXPLAIN 分析)、或 SQL 写得太差。 ...

August 15, 2026 · 2 min · 229 words · Pilote Chen

备份与监控:3-2-1 原则、mysqldump 与轻量告警

运维有两件事平时看不出价值、出事时能救命:备份和监控。这篇讲最小可用的做法。 一、备份 3-2-1 原则 3 份数据(1 份原始 + 2 份备份) 2 种不同介质(如本地磁盘 + 云存储/异地) 1 份异地(防机房/服务器整体故障) 哪怕只做到"定时备份 + 一份传到异地",也比不备份强一百倍。 二、文件备份 rsync # 把 /var/www 同步到备份目录(增量) rsync -avz /var/www/ /backup/www/ # 同步到远程服务器 rsync -avz /var/www/ user@backup-host:/backup/www/ -a 保留权限/时间戳,-z 压缩,--delete 让目标与源完全一致(慎用)。 三、数据库备份 mysqldump # 单库 mysqldump -u root -p mydb > /backup/mydb_$(date +%F).sql # 全部库 mysqldump -u root -p --all-databases > /backup/all_$(date +%F).sql # 恢复 mysql -u root -p mydb < /backup/mydb_2026-08-15.sql 大库建议用 --single-transaction(InnoDB 不锁表)或物理备份工具,初级先用 mysqldump。 ...

August 15, 2026 · 2 min · 248 words · Pilote Chen

服务器安全基线:SSH、防火墙、Fail2ban 与日志审计

服务器一上线,几分钟内就会被全网扫描器盯上。上线前把这条基线做完,能挡掉 90% 的常见攻击。 一、安全基线清单 只开放必要端口,其余全关 SSH 用密钥登录,禁 root,禁密码(可选) Fail2ban 自动封爆破 系统和软件及时更新 关键日志有留存、能审计 定期自查开放端口 二、SSH 加固 编辑 /etc/ssh/sshd_config: PermitRootLogin no # 禁 root 直接登录 PasswordAuthentication no # 禁密码登录(先确认密钥能登再开) AllowUsers ubuntu # 只允许指定用户 MaxAuthTries 3 # 最多 3 次尝试 sudo sshd -t # 语法检查 sudo systemctl reload sshd ⚠️ 改之前先另开一个终端确认密钥能登录,别把自己锁外面。密钥注入见《Linux 服务器初始化》。 三、防火墙 UFW sudo ufw allow OpenSSH # 只放行 22 sudo ufw allow 80/tcp # 需要网页才放行 sudo ufw enable sudo ufw status verbose 原则:默认拒绝,白名单放行,用到哪个端口开哪个。 ...

August 15, 2026 · 1 min · 199 words · Pilote Chen

Docker 从零讲清:镜像、容器、卷、网络与 Compose

Docker 是初级运维绕不开的工具。搞懂下面四个概念,其余都是查命令。 一、四个核心概念 概念 类比 说明 镜像 Image 程序安装包/模板 只读,包含运行环境+代码 容器 Container 跑起来的进程 镜像的运行实例,隔离的 卷 Volume 外接硬盘 持久化数据,容器删了数据还在 网络 Network 局域网 容器之间、容器与宿主机通信 一句话:用镜像 run 出容器,数据放卷里,容器间用网络通信。 二、常用命令 docker pull nginx:alpine # 拉镜像 docker images # 看镜像 docker ps # 运行中的容器 docker ps -a # 所有容器(含已停止) # 运行一个 nginx docker run -d --name web \ -p 80:80 \ -v /home/ubuntu/site:/usr/share/nginx/html:ro \ --restart unless-stopped \ nginx:alpine docker logs -f web # 看日志 docker exec -it web sh # 进容器 docker stop/start/restart web docker rm web # 删容器 docker rmi nginx:alpine # 删镜像 参数速记: ...

August 15, 2026 · 2 min · 239 words · Pilote Chen

网络排查:网站打不开?从 DNS 到端口一步步定位

“网站打不开"是运维最高频的工单。别乱猜,按下面这条链路从外到内一层层排除,基本都能定位。 DNS 解析 → 网络可达 → 安全组/防火墙 → 端口监听 → 服务进程 → 应用日志 第一步:DNS 解析对不对 dig www.example.com # 查 A 记录 dig @8.8.8.8 www.example.com # 指定公共 DNS 查 nslookup www.example.com 解析不到 / 解析到错误 IP → 去 DNS 控制台看记录(A / CNAME)是否配置正确、是否生效(TTL 有缓存)。 本机 /etc/hosts 会优先于 DNS,排查时先看它有没有写死: cat /etc/hosts cat /etc/resolv.conf # 本机用的 DNS 服务器 第二步:网络通不通、端口开没开 ping <IP> # ICMP 通不通(部分云默认禁 ping,不通不代表坏) nc -vz <IP> 80 # 测试 TCP 80 是否可达 telnet <IP> 80 # 老式但直观 nc -vz 超时 → 网络/安全组/防火墙挡了。 通了但没响应 → 端口没服务在监听,进入下一步。 第三步:安全组与防火墙 云服务器有两层防火墙,都要查: ...

August 15, 2026 · 1 min · 212 words · Pilote Chen

Linux 系统基础:初级运维必备命令与 systemd 入门

初级运维的核心能力就一句话:会用命令把系统"看懂、改对、救回来"。这篇把最常用的几块梳理成一份可反复查阅的手册。 一、高频命令速查 systemd 服务管理 systemctl status nginx # 看服务状态 systemctl start|stop|restart nginx systemctl enable --now nginx # 开机自启 + 立即启动 systemctl disable nginx systemctl list-unit-files # 所有服务的自启状态 systemctl cat nginx # 看服务的 unit 文件 日志 journalctl journalctl -u nginx -f # 实时跟踪某服务日志 journalctl -u nginx --since "1 hour ago" journalctl -p err -b # 本次启动以来的错误级别日志 journalctl -k | grep -i oom # 内核日志里找 OOM 网络与端口 ss ss -tlnp # 所有正在监听的 TCP 端口 ss -s # 连接统计概览 ss -tunp | grep ESTAB # 已建立的连接 lsof -i :80 # 谁占用了 80 端口 文件查找与内容搜索 find / -name "*.log" -mtime +7 -size +100M # 7 天前、>100M 的日志 find /var/log -type f -name "*.gz" -delete # 批量删(慎用) grep -rn "error" /var/log/nginx/ # 递归搜内容 grep -c "500" access.log # 统计出现次数 二、用户与权限 # 建用户 sudo adduser deploy # 权限三件套 chmod 755 file # rwxr-xr-x(属主读写执行,其余读执行) chmod 644 file # rw-r--r-- chown -R deploy:deploy /var/www/site # umask:新建文件的默认权限掩码,022 表示去掉 group/other 的写权限 umask 022 sudo 授权:不要直接改 /etc/sudoers,用 visudo 或往 /etc/sudoers.d/ 放文件: ...

August 15, 2026 · 2 min · 399 words · Pilote Chen