首页
关于
Search
1
从零开始学 Linux:终端手记阅读指南
44 阅读
2
修改 Nginx 配置前后,我会检查的六件事
38 阅读
3
Linux 命令行入门:先练熟这 12 个命令
36 阅读
4
systemctl 与 journalctl:服务故障排查的固定顺序
29 阅读
5
Docker 第一次练习:镜像、容器、日志和端口
28 阅读
Linux 入门
命令与学习指引
文件与权限
系统管理
服务与资源管理
Web 与 PHP 配置
MySQL 运维
监控与日志
Shell 自动化
Bash 基础与可靠性
文本与日志处理
定时任务与备份
排错复盘
服务与通知排障
存储与恢复排查
网络基础
连通性与防火墙
HTTP 路由与代理
Web 探测与指标
容器实践
Docker 入门
数据持久化
工具与效率
Git 版本管理
终端与远程工具
登录
Search
标签搜索
Linux
学习路线
新手入门
chmod
文件权限
systemd
Bash
SSH
命令行
软件包管理
磁盘空间
日志分析
阿远
累计撰写
45
篇文章
累计收到
22
条评论
首页
栏目
Linux 入门
命令与学习指引
文件与权限
系统管理
服务与资源管理
Web 与 PHP 配置
MySQL 运维
监控与日志
Shell 自动化
Bash 基础与可靠性
文本与日志处理
定时任务与备份
排错复盘
服务与通知排障
存储与恢复排查
网络基础
连通性与防火墙
HTTP 路由与代理
Web 探测与指标
容器实践
Docker 入门
数据持久化
工具与效率
Git 版本管理
终端与远程工具
页面
关于
搜索到
45
篇与
的结果
2026-10-26
Linux 网络连不通时:按 IP、路由、DNS 的顺序检查
网络故障先区分地址、路由、解析和目标服务,按层排查比反复重启网卡更有效。
2026年10月26日
21 阅读
0 评论
1 点赞
2026-10-26
磁盘空间不足时,先用 df、du、lsof 定位
看到“设备上没有空间”时,先确认是哪个挂载点满了,再定位增长最快的目录。不要从根目录开始盲删文件:日志、数据库和仍被进程占用的已删除文件,处理方式完全不同。第一步:确定哪个文件系统满了df -hT df -idf -hT 看容量与文件系统类型;df -i 看 inode。若容量还有剩余但 inode 已耗尽,通常是小文件数量过多,此时删除一个大文件没有帮助。第二步:缩小范围sudo du -xhd1 /var 2>/dev/null | sort -h sudo du -xhd1 /home 2>/dev/null | sort -h-x 限制在同一文件系统,-d1 只看一层目录。逐层进入占用最大的目录,确认文件用途和保留要求。sort -h 按人类可读的容量排序。第三步:解释 df 与 du 不一致若 df 显示占用很高,du 却找不到对应文件,可以检查是否有进程仍打开了已删除文件:sudo lsof +L1这类空间通常要等占用文件的进程正常关闭后才会释放。先确认进程和业务影响,再选择合适的重启窗口;不要直接强杀未知进程。复盘模板记下告警时间、满的挂载点、df 与 du 的关键数字、找到的目录或进程、处理动作,以及处理后的 df -hT 输出。这样下次空间上涨时,能分辨是正常增长还是重复故障。不要忽略挂载点与测量误差df 和 du 不一致还可能来自文件系统元数据、保留块、快照、挂载覆盖或扫描时文件持续变化,已删除但仍打开的文件只是其中一种原因。du 扫描大目录会产生 I/O,先缩小范围;2>/dev/null 会隐藏权限等错误,排查异常时应去掉重定向。确认容量与 inode 的问题分别处理,数据库数据文件不能当普通缓存删除。内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
2026年10月26日
23 阅读
0 评论
2 点赞
2026-10-26
SSH 连不上怎么办:一份可复用的排查清单
“能 ping 通,却无法 SSH 登录”是实验环境里常见的现象。Ping 只说明 ICMP 可达,并不能证明 22 端口正在监听。下面按客户端、网络、服务端三个层次排查,适合在自己的虚拟机和授权服务器上练习。先区分错误类型ssh -vvv user@hostConnection timed out 通常先看网络路径或过滤规则;Connection refused 常见于目标端口没有服务监听;Permission denied 则进入认证阶段,应检查用户名、密钥和服务端认证日志。不要把三种错误都归结为“SSH 坏了”。从客户端确认目标核对 IP、端口和用户名:ssh -p 22 user@host。若使用主机名,先用 getent hosts host 检查解析结果。对于自有设备,可用 nc -vz host 22 快速检查 TCP 连接;没有 nc 时不必为此专门改动系统。在服务端看监听和日志systemctl status sshd --no-pager ss -lntp | grep :22 journalctl -u sshd -b --no-pager -n 100有些发行版服务名是 ssh,请以 systemctl list-unit-files 的结果为准。若配置刚修改,先运行 sudo sshd -t 检查语法;若服务在监听但客户端超时,再核对防火墙和云平台安全组中实际使用的端口。不要为了测试直接关闭整个防火墙。一份有效的复盘要写什么记录命令、关键输出、最终原因和验证方式。例如“服务未监听 22 端口”比“重启后恢复”更有价值。远程修改 SSH 配置时始终保留当前会话,确认新的连接成功后再关闭,以免把自己锁在机器外。按认证阶段继续定位ssh -G 主机别名可查看最终生效的用户、端口、IdentityFile 等配置,输出分享前脱敏。认证失败时检查服务端日志、用户家目录与 .ssh 权限、公钥对应关系。只提供公钥给服务器,私钥留在客户端。主机指纹变化先核对是否重装或更换机器,不要直接关闭 StrictHostKeyChecking。本站端口以 SSH 别名和现场监听为准。内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
2026年10月26日
26 阅读
0 评论
2 点赞
2026-10-26
systemctl 与 journalctl:服务故障排查的固定顺序
服务启动失败时,我会按“状态 → 日志 → 配置 → 端口 → 再验证”的顺序检查。这样可以保留证据,也能避免一上来就重装软件。下面以 sshd 为例;不同发行版的服务名可能是 ssh。1. 先确认服务状态systemctl status sshd --no-pager systemctl is-enabled sshdstatus 会显示是否运行、退出码以及最近几行日志。is-enabled 只表示开机是否自动启动,与此刻是否运行是两回事。若提示单元不存在,先用 systemctl list-unit-files | grep ssh 找真实名称。2. 沿着时间线读日志journalctl -u sshd -b --no-pager -n 80 journalctl -u sshd --since "30 minutes ago" --no-pager-b 限制为本次启动,-n 80 看末尾 80 行。重点找第一条明确错误:配置语法、权限、端口占用或依赖失败。记下报错原文,再查对应配置。3. 改动前先验证配置OpenSSH 服务端可用 sshd -t 检查配置语法;执行前先确认系统已安装并找到该命令。其他服务也常有自己的 --test 或 -t 选项。编辑配置前先备份,修改后先做语法检查,再重启。sudo sshd -t sudo systemctl restart sshd systemctl status sshd --no-pager ss -lntp | grep -E ':(22|62307)\b'远程操作 SSH 时,保留当前登录会话,确认新会话可以连接后再退出。最后记录“现象、日志证据、改动、验证结果”,这比“重启好了”更有复用价值。重新加载的适用边界本站 SSH 使用自定义端口,文中 22 只是默认示例。先用 systemctl cat sshd 核对服务执行的程序,再检查实际监听;机器上存在多套 OpenSSH 时,PATH 中的 sshd 不一定是服务正在使用的版本。修改前保留控制台入口,用实际服务二进制 -t 检查,再按服务能力选择 reload 或 restart。daemon-reload 只重新读取 systemd 单元,不会替服务加载业务配置。内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
2026年10月26日
29 阅读
1 评论
3 点赞
2026-10-26
Bash 脚本起步:变量、引号与退出码
写备份脚本时,除了变量与引号,还要处理输出目录嵌套、失败半成品和文件名碰撞。下面只演示普通文件目录的实验备份,不用于在线数据库一致性备份。前提与最小脚本依赖 Bash、GNU realpath、mktemp、tar,准备两个独立测试目录。备份目标不能是源目录或其子目录,否则可能把归档自身打包进去。#!/usr/bin/env bash set -euo pipefail umask 077 [[ $# -eq 2 ]] || { echo '用法:backup.sh 源目录 目标目录' >&2; exit 2; } [[ -d "$1" ]] || { echo '源目录不存在' >&2; exit 1; } source_dir=$(realpath -e -- "$1") mkdir -p -- "$2" backup_dir=$(realpath -e -- "$2") if [[ "$source_dir" == / || "$backup_dir" == "$source_dir" || "$backup_dir" == "$source_dir/"* ]]; then echo '请使用独立的源目录和备份目录;不允许备份根目录' >&2 exit 1 fi tmp=$(mktemp "$backup_dir/backup-$(date +%Y%m%d-%H%M%S)-XXXXXX.partial") trap 'rm -f -- "$tmp"' EXIT tar -czf "$tmp" -C "$source_dir" . gzip -t "$tmp" tar -tzf "$tmp" >/dev/null archive="${tmp%.partial}.tar.gz" [[ ! -e "$archive" ]] || { echo '目标已存在' >&2; exit 1; } mv -- "$tmp" "$archive" printf '已生成:%s\n' "$archive"mktemp 为本次运行生成独立临时文件;成功校验后才改为正式名称。trap 只清理该临时文件,不递归删除目录。此示例没有并发锁与保留策略,不能直接代替本站正式备份。一轮可复现实验先在 ~/linux-lab/source 放两个文本文件,目标选 ~/linux-lab/backup。运行 bash -n backup.sh 检查语法,再执行 bash backup.sh ~/linux-lab/source ~/linux-lab/backup,重复执行应得到不同归档。把归档解到新的空目录,对比文件内容。失败场景源不存在应非零退出;目标在源内部应拒绝;目标不可写时应报错且不留下正式归档。源在打包期间变化可能导致 tar 报错或不一致,重要业务需协调写入。gzip/tar 校验仅证明格式可读,真正恢复还要比较数据。退出码与引号引号保护路径空格,-- 防止路径被当选项,pipefail 保护管道状态。set -e 有上下文例外,不能代替所有显式错误处理。这里的备份是基础练习,不含数据库、跨主机复制或自动恢复。内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
2026年10月26日
14 阅读
0 评论
1 点赞
1
...
7
8
9