自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 Docker 架构与核心原理深度解析:容器到底是怎么实现的?

Docker 不是虚拟机技术。它是:Namespace + Cgroups + UnionFS + OCI 标准 的工程整合。换句话说:容器不是一个“迷你操作系统”,它只是被精细隔离与控制的一组进程。理解这一点,后面学习:容器网络容器存储Kubernetes 调度资源限制都会变得非常清晰。

2026-02-24 15:19:27 2178

原创 系统健康巡检脚本的设计思路与落地实践

在真实生产环境中,系统崩溃往往不是突然发生,而是长期资源异常累积的结果。此外,还应关注日志目录增长异常,尤其是 Web 服务(如 Nginx)和数据库(如 MySQL)所在目录。它通常通过 crontab 定时执行脚本,对关键系统指标进行采样,并在异常时记录或报警。在 Linux 系统中,可以通过 free 或 /proc/meminfo 获取数据。巡检脚本不能“什么都查”,否则既浪费资源,也无法聚焦问题。关键点不在于“怎么查”,而在于“什么时候认为异常”。这体现的是工程思维,而不是“命令集合”。

2026-02-23 17:12:58 650

原创 基于日志的故障定位与自动化分析体系

在生产环境中,绝大多数故障的第一现场不在监控图表,而在日志文件。日志是系统行为的“原始记录”。Shell 的优势不在于炫技,而在于对文本数据的高速处理能力。在 Linux 体系中,日志分析几乎天然就是 Shell 的主场。在主流 Linux 发行版(如 CentOS、Ubuntu)中,日志通常集中在 /var/log 目录下。运维价值在于:当业务被攻击时,你可以在几十秒内给出高频来源列表,而不是“正在排查中”。理解日志来源,是写好日志分析脚本的第一步。这类脚本在小型团队中非常常见,成本极低,但价值极高。

2026-02-23 17:12:19 464

原创 Shell在日志分析与故障排查中的实战应用

在运维领域,真正拉开差距的不是会不会写循环,而是:当线上报警时,你能否在10分钟内定位问题方向。系统不会告诉你“这里出错了”,它只会留下日志。日志就是系统的“遗言”。Shell之所以在运维中不可替代,是因为:不依赖图形界面不依赖额外环境可以在救援模式下工作可以快速组合多种工具做数据过滤当系统卡死、负载飙升、接口超时时,你第一时间一定是 SSH 上去。那时候没有IDE,没有可视化平台,只有命令行。

2026-02-22 18:08:25 502

原创 为什么你的 Shell 脚本总在生产环境翻车?

在测试环境中,一个脚本能跑通,往往意味着功能基本正确。但在生产环境中,脚本“能跑”远远不够。真正的问题通常出现在三个方面:条件判断不严谨错误没有被正确传播异常退出没有清理环境很多运维事故,并不是系统复杂,而是脚本缺乏工程化控制。这一篇,我们不讲语法细节,而是讲。

2026-02-22 18:06:50 868

原创 用参数展开写一个“可上线”的部署脚本

本文介绍如何编写一个健壮的Bash部署脚本,重点使用参数展开技术提升脚本质量。主要内容包括:1) 设置基础工程标准(set -euo pipefail);2) 使用参数展开处理默认值(${1:-dev})和强制参数(${3:?});3) 字符串操作技巧(删除后缀%、变量替换);4) 数组遍历和参数校验;5) 整合完整脚本示例。文章强调参数展开的三大优势:减少子进程调用、提升可读性和增强健壮性,指出成熟脚本应优先使用Bash内建功能而非外部命令。

2026-02-21 15:58:19 258

原创 Bash 执行机制与进程模型:理解 Shell 的底层逻辑

本文系统讲解了Shell脚本的执行模型,重点解析了Bash的工作机制。主要内容包括:1)Shell作为命令解释器的本质工作流程;2)Shebang行的实际作用及最佳实践;3)三种脚本执行方式的本质区别(子进程/当前进程);4)父子进程的变量作用域问题;5)子Shell陷阱(括号与花括号差异);6)管道导致变量丢失的原因及解决方案;7)错误处理机制(set命令);8)完整的Shell命令执行流程。文章强调理解进程模型对编写可靠Shell脚本的重要性,指出不掌握子Shell、变量作用域等底层机制将导致各种潜在问

2026-02-21 11:06:25 1158

原创 为什么在云原生时代,Shell 仍然是运维工程师的核心能力?

Shell仍是运维自动化的核心技能,并未被Docker、Kubernetes等工具取代。作为系统命令的底层接口,Shell是所有自动化流程的"胶水层",尤其在批量操作、日志处理等场景具有轻量级优势。云原生时代反而更依赖Shell,如Dockerfile构建、CI/CD流水线等都基于Shell命令。其真正价值在于组合能力,通过管道、重定向等将简单命令组合成复杂功能。工程化的Shell脚本需包含异常处理、日志记录等规范,这直接决定运维质量。未来Shell仍将作为系统控制、自动化入口的基础技能

2026-02-20 21:09:57 661

原创 Linux知识点问答题——分析和存储日志

默认情况下,journald 的日志通常保存在 /run/log/journal/ 中,这是一个内存中的目录,系统重启后日志会丢失。如果希望日志持久保存,可以创建 /var/log/journal/ 目录,并确保 journald 使用它,这样日志就会被写入磁盘,重启后仍然存在。systemd-journald 会把日志存储成二进制格式的 journal 文件,通常位于 /run/log/journal/ 或 /var/log/journal/ 目录中,而不是传统的纯文本文件。

2026-02-20 21:06:49 404 1

原创 Docker 原理与生产实践全解析(从安装到内核机制)②

本文总结了Docker容器的核心技术原理:1)使用Dockerfile构建镜像,通过分层机制优化构建过程;2)依赖Linux Namespace实现进程、网络等隔离;3)通过Cgroups限制CPU、内存等资源;4)利用Bridge模式实现容器网络通信,基于veth、网桥和iptables实现流量转发。Docker本质是对Linux内核特性(Namespace、Cgroups、UnionFS等)的工程化整合,而非传统虚拟机技术。理解这些底层机制有助于掌握容器技术的核心原理。

2026-02-14 16:24:19 519

原创 Docker 原理与生产实践全解析(从安装到内核机制)①

本文总结了Docker容器技术的学习要点:1)生产环境安装需固定版本、规划数据目录;2)容器运行时架构包含containerd、runc等组件;3)镜像采用分层只读结构,容器启动时增加可写层;4)企业选择容器的五大优势;5)UnionFS通过分层叠加、写时复制等机制实现;6)Docker使用Overlay2存储驱动实现UnionFS思想。内容涵盖Docker安装、架构原理及企业应用价值。

2026-02-14 16:18:12 698

原创 Linux知识点问答题——归档和传输文件

使用 xz 时用 -J,生成 .tar.xz。而 rsync 是“同步工具”,会先比较源和目标,只传输发生变化的部分,效率更高。rsync 还支持断点续传、权限保持和镜像同步等功能,适合频繁或大规模的数据同步,而 scp 适合一次性的简单拷贝。这条命令表示:以 root 用户的身份,通过 SSH 连接到远程主机 remoteuser,把远程主机上的 /var/log 目录及其下面的所有内容递归地复制到本地主机的 /tmp 目录中。这里的 -r 表示递归复制目录,如果没有这个选项,目录是拷不过来的。

2026-01-27 23:16:16 212

原创 Linux知识点问答题——调度未来任务

常见做法是把任务写成脚本,然后放到 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 或 /etc/cron.monthly 这些目录中,让系统按固定周期自动执行。如果需要更精细的时间控制,也可以编辑 /etc/crontab 或在 /etc/cron.d/ 目录下放置自定义的 crontab 文件,这种方式还能显式指定“以哪个用户身份运行”。用户级的 crontab 一行通常由五个时间字段加一条要执行的命令组成,顺序是:分钟、小时、日期、月份、星期。

2026-01-24 22:21:07 274 1

原创 Linux知识点问答题——提高命令行运行效率

正则表达式是一套更通用、更强大的文本匹配规则,通常由像 grep、sed、awk 这样的工具来解析;、[],功能相对简单。需要注意的是,shell 会先对命令行进行模式展开,如果在命令中直接写正则表达式,可能会被 shell 先“误处理”,所以通常要用引号把正则表达式包起来,确保是交给命令本身去解释。/bin/bash 表示当我直接运行这个脚本时,系统会用 /bin/bash 来解析里面的命令。它常用来显示字符串、变量的值,或者在 shell 脚本里打印提示信息、调试信息,是最基础也最常用的输出命令之一。

2026-01-23 22:39:41 484

原创 Linux知识点问答题——访问 Linux 文件系统

存储设备就是用来长期保存数据的硬件,比如硬盘、SSD、U 盘之类的。挂载点就是这个接入口,对应的是一个已经存在的目录,比如把某个分区挂载到 /mnt/data,以后访问这个目录,其实就是在访问那个分区里的内容。在 SATA 设备中,第一块磁盘通常是 /dev/sda,它的第一个分区就是 /dev/sda1;find 是实时在文件系统中查找,条件更灵活,比如按大小、时间、权限查,但速度相对慢一些,尤其是在目录很多的时候。它们在 Linux 中以设备文件的形式存在,比如 /dev/sda、/dev/sda1。

2026-01-22 22:46:49 970

原创 Linux知识点问答题——安装和更新软件包

BaseOS 主要提供系统运行所必需的基础组件,比如内核、核心库和最基本的工具,强调稳定性;底层真正干安装、卸载这些事的,还是 rpm,但 dnf 在外面多做了一层工作,比如自动解决依赖、从软件仓库下载包、批量更新系统。简单说,rpm 偏底层、偏原子操作,dnf 偏高层、偏用户友好,日常使用基本都是 dnf,只有在特殊情况下才直接用 rpm。在 RHEL 中要用第三方软件仓库,通常需要先添加对应的 repo 配置文件,或者安装对方提供的 release 包,让系统知道“这个仓库在哪里、怎么验证”。

2026-01-21 22:35:12 326

原创 Linux知识点问答题——管理网络

到底前面多少位是网络位、后面多少位是主机位,并不是固定的,而是由子网掩码决定的。掩码是 24 位,说明前 24 位是网络位,剩下 8 位是主机位。8 位一共可以表示 2⁸,也就是 256 个地址,但其中全 0 的地址表示网络地址,全 1 的地址表示广播地址,不能分配给主机,所以真正能用的是 256 − 2 = 254 台主机。当一台主机要把数据发出去时,会根据目标 IP 地址去查路由表,看这个地址属于哪个网络,然后决定是直接发给同一网段的主机,还是交给网关转发。

2026-01-20 19:05:45 488

原创 Linux知识点问答题——配置和保护 SSH

一般私钥存放在客户端的 ~/.ssh/id_rsa(或其他算法文件)中,公钥对应的是 id_rsa.pub,而服务器端会把公钥内容放进用户家目录下的 ~/.ssh/authorized_keys 文件。登录时,服务器用公钥给客户端出一道“加密挑战”,客户端用私钥完成验证,服务器能验证成功,就确认你是合法用户,于是直接放行,全程不需要输入密码。这样即使知道 root 密码,也不能直接用 root 账号通过 SSH 登录,只能先用普通用户登录,再通过 su 或 sudo 获取管理员权限。

2026-01-19 20:25:16 304

原创 Linux知识点问答题——控制服务和守护进程

常见的单元类型里,service 用来描述服务进程,target 用来表示一组运行目标(类似以前的运行级别),socket 用于套接字激活,mount 管理挂载点,timer 用来替代传统的 cron 定时任务。常见的守护进程有负责远程登录的 sshd,负责定时任务的 crond,负责日志记录的 rsyslogd,还有提供网页服务的 httpd 或 nginx 等。而 mask 是更强的手段,相当于把服务彻底“封死”,即使手动 start 也起不来,除非先 unmask。列举一些常见的守护进程。

2026-01-19 09:08:09 285

原创 Linux知识点问答题——监控和管理 Linux 进程

ps aux 是 BSD 风格写法,用来显示系统中几乎所有进程,其中 a 表示显示所有用户的进程,u 表示以用户为中心的详细格式,x 表示包含没有控制终端的进程。系统启动时它是第一个被拉起的用户态进程(PID 通常是 1),后面所有的服务、守护进程基本都是它负责启动和管理的。一个作业可以是一个进程,也可以是一组进程,比如一条管道命令。在 Linux 里通常用字母表示,比如 R 表示正在运行或就绪,S 表示可中断睡眠,D 表示不可中断睡眠(多和 I/O 有关),T 表示被暂停,Z 表示僵尸进程。

2026-01-18 09:34:59 451

原创 Linux知识点问答题——控制对文件的访问

suid 用在可执行文件上时,表示普通用户运行这个程序时,会临时拥有文件所有者的权限,比如 passwd 就是典型例子。用在目录上时,表示在这个目录下新建的文件会自动继承该目录的组。sticky 位通常用在目录上,比如 /tmp,作用是即使目录对所有人可写,用户也只能删除自己创建的文件,不能乱删别人的。系统在判断能不能访问时,会先看你是不是所有者,不是的话再看你在不在这个组里,最后才看“其他人”的权限。结果就是,新建文件一般是 644,目录是 755,这样别人能看、能进目录,但不能随便改,更安全一些。

2026-01-17 14:00:10 584

原创 Linux知识点问答题——管理本地用户和组

真正的密码并不在这里。sudo -i 则相当于通过 sudo 获得一个 root 的登录 shell,环境也会切换成 root 的,相当于“用 sudo 方式登录 root”,但依然比直接 root 登录更可控。而 su - user 更像是“完整登录一次”,会加载目标用户的环境变量,切到他的家目录,整体体验就和直接登录那个用户差不多。前提是这个用户被写进了 sudo 的授权配置里,一般是在 /etc/sudoers 文件中,或者属于某个被允许使用 sudo 的组(比如很多系统里的 wheel 组)。

2026-01-17 09:08:45 499

原创 Linux知识点问答题——创建、查看和编辑文本文件

简单来说,想影响所有人就改 /etc/profile,只想影响自己就用家目录下的文件,而更偏向“每开一个终端都生效”的配置通常放在 .bashrc 里。管道和重定向的主要区别在于:重定向通常是命令和文件之间的数据流动,而管道是命令和命令之间的连接,更偏向于把多个简单命令组合成一个处理流程。&> /dev/null 的意思是把命令的标准输出和标准错误一起丢进 /dev/null,也就是说这个命令执行时,终端上什么都看不到,不管是正常输出还是报错信息。vim 是一个文本编辑器,可以看作是 vi 的“加强版”。

2026-01-16 13:53:31 816

原创 Linux知识点问答题——从命令行管理文件

我的理解是,在 Linux 看来,不只是我们平时看到的普通文本文件、程序文件是文件,目录本身也是文件,甚至硬件设备、进程信息、系统状态也都通过文件的形式来抽象表示。软链接则更像是一个“快捷方式”,它本身是一个独立的文件,里面保存的是目标文件的路径,如果原文件被删除,软链接就会失效。而 rm -r 是递归删除,可以把目录以及目录中的所有文件和子目录一并删除,功能更强,但也更危险,一旦路径写错,很容易误删重要文件,所以使用时要格外小心。

2026-01-16 09:14:51 805

原创 Linux知识点问答题——访问命令行

本文介绍了Linux系统的基本概念和使用建议:终端是输入输出窗口,shell是命令解释器(如Bash、zsh),两者需配合使用;CLI(命令行)相比GUI更适合初学者学习Linux,能更深入理解系统机制;列举了常用文件查看命令(cat、less、head/tail等),这些基础命令在实际操作中非常实用。文章帮助读者建立Linux基本概念框架,为深入学习打下基础。

2026-01-15 18:04:35 419 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除