ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从基础命令到服务器维护:Linux实战学习与排障复盘

从基础命令到服务器维护:Linux实战学习与排障复盘 这份日志是2月3日那天留下的学习记录今天复盘时发现能写的内容比当时记的多出不少。当时的目标很明确从只会敲几个ls、cd命令的水平往“能独立维护一台Linux服务器”的方向迈一步。日志里记录的都是一些看起来很基础的命令和配置但它们恰恰是后面排查问题最常用的底子。如果你也在学Linux或者正在准备运维、后端方向的面试这篇记录里的命令清单、安装方案和排障思路可以直接抄作业。文章会沿着一条真实的学习路径来写从哪里开始、怎么选系统、装完系统先做什么、命令怎么练、用户和权限要怎么理解、软件怎么装、出问题了怎么排查。有一些内容看起来偏冷门比如磁盘寻道算法、WSL2挂载U盘但它们都来自当时真实的探索过程放在一起反而能拼出一张完整的Linux认知地图。1. 学习路线先想清楚从场景倒推而不是背命令1.1 学Linux最大的误区是“先背100条命令”我见过太多人拿着一份“Linux常用命令大全”就开始背背到第30条已经分不清find和grep到底该用谁。2月3日这天的学习记录里我给自己定的规则是不背命令而是假设自己手里有一台刚装好的服务器要完成“部署一个Java服务、排查一个网络问题、创建一个新用户”这类真实任务。遇到任务就查命令用完记下来命令才能真正变成自己的。这种思路和面试准备其实是一致的。网上那些“linux面试题”看着五花八门真正拆开看考的永远是几个固定能力会不会看系统信息、会不会查进程和端口、会不会处理文本、会不会管理用户权限、会不会看日志。这些能力全部可以从场景中学到。比如今天要部署一个服务就绕不开“查看磁盘空间够不够”“看端口有没有被占用”“看日志确认启动状态”这几个动作做下来df、ss、journalctl、tail就全都练到了。我推荐的顺序是先掌握“文件与目录操作”“文本处理”“用户与权限”三大基本功再掌握“软件安装”“服务管理”“网络排查”三大运维技能。前面三项是地基后面三项是日常吃饭的家伙事。这个顺序不是我想出来的而是踩了无数次坑之后自然形成的。1.2 镜像、发行版与内核版本它们到底是什么关系第一天学Linux的人很容易被一堆名词绕晕Ubuntu、Debian、CentOS、Rocky、Deepin、openEuler还有内核版本号。这里需要分清楚两个层级Linux内核是Linus维护的那个内核而发行版是内核加上一堆软件、包管理器、桌面环境组成的完整系统。你装的不是“Linux内核”而是某个发行版。当天我选的实验系统是Rocky Linux 9原因很简单服务器市场上RHEL兼容系占了很大比例CentOS停止维护后Rocky是社区里接手得最顺的替代者之一。如果你是为了日常办公和学习也可以选Ubuntu或者Deepin如果是为了考一些国产化的认证openEuler和统信UOS这些也是绕不开的。下载镜像时官方站点一般会提供ISO文件下载完强烈建议先做一次SHA256校验我见过不少人因为镜像损坏安装到一半直接报错白白浪费几个小时。装完之后做的第一件事我建议是看一眼系统版本和内核版本把这两个命令刻进脑子里cat /etc/os-release看发行版信息uname -a看内核信息。后来做面试题整理时我发现这两个命令的区别几乎是必考题很多人答不上来其实就是没把层级关系搞清楚。2. 命令基本功文本处理与文件操作是最值钱的部分2.1 sed、more、grep这些命令为什么值得花一整天练Linux下最值钱的不是图形界面而是文本处理能力。服务器上没有鼠标所有信息都以文本形式输出谁能在文本流里快速找到需要的内容谁就更高效。grep是“找”sed是“改”less是“翻”这三个命令组合起来基本能覆盖日志处理的全部场景。more是分页器里的老前辈但现在实际工作中我更喜欢less因为less不仅能看还能往回翻支持搜索操作手感更像vim。看一个大日志文件时用less app.log直接打开然后按/输入关键词搜索再按n跳到下一个匹配项这个效率是用vim拖日志的人想象不到的。sed是一个非常有意思的流编辑器它不打开文件而是像流水线一样一行行处理。常用的几个场景我都记在当天的笔记里sed -n 10,20p file.log打印第10到20行sed -i s/old/new/g file.conf把文件里的所有old替换成new其中-i表示直接改文件不打招呼sed -i /^$/d file删除所有空行。注意-i是真的会把文件改了建议先不加-i跑一遍确认输出没问题再执行。grep的核心是过滤。我常用的组合符有grep -v排除某些行grep -c统计匹配数量grep -E使用扩展正则grep -rn在目录里递归查找。比如排查分布式服务时想找到所有报错信息一条grep -E ERROR|Exception -rn /var/log/myapp/就能定位到具体文件和行号这一步是后续分析的基础。2.2 文件与目录操作速查表照着练一遍我把当天整理的文件操作命令放在一个表里这些命令几乎每天都会用到真心建议练到闭眼能敲出来的程度。操作命令说明查看当前目录pwd最基本的定位工具列出文件ls -lah-l长格式-a含隐藏文件-h人性化大小切换目录cd /var/log绝对路径或相对路径都可以复制文件/目录cp -a src dst-a保留权限属性复制目录时必须加-r或-a移动/重命名mv old new同目录下就是重命名创建软链接ln -s /opt/app /data/app软链接类似于Windows快捷方式删除文件/目录rm -r dir / rm -rf dir慎用后面会专门讲查看文件大小du -sh ./*找出谁占满了磁盘统计磁盘使用df -h查看磁盘剩余空间查找文件find / -name *.log按名字、按大小、按时间都能查这些命令背后藏着一个非常重要的理念Linux一切皆文件。目录是文件设备是文件进程信息在/proc里也是一堆文件。理解了这句话再看很多命令都会豁然开朗。比如想查看CPU信息其实就是cat /proc/cpuinfo想查看内存就是cat /proc/meminfo它们和普通文件没有本质区别。3. 用户、权限与“提权”的正确理解方式3.1 新建用户与用户组不只是会敲useradd服务器安全的第一道大门是用户管理。2月3日当天我在新装的Rocky上创建了一个部署用户操作过程看起来简单但每一步都有讲究。useradd -m -s /bin/bash deploy中的-m会同时创建用户主目录-s指定登录shell为bash如果不指定会使用系统默认shell交互体验会差很多。创建完用户后设置密码用passwd deploy如果希望这个用户能执行管理操作就需要把它加入sudo组。这里有个经典的坑在CentOS/RHEL系中管理员组叫wheel在Ubuntu中叫sudo别记混。命令是usermod -aG wheel deploy-aG里的-a表示追加不加的话会把用户从现有附加组中全部移除这个细节足以让你从莫名其妙的问题中救出来。我给这个用户配SSH密钥登录时习惯用ssh-keygen -t ed25519生成更现代、更安全的密钥对然后通过ssh-copy-id deploy服务器IP把公钥传过去。很多人忽略的是目录权限.ssh目录必须是700authorized_keys文件必须是600权限太开放的话SSH会直接拒绝生效。这个细节在真实环境里至少坑过我两次。3.2 提权不是攻击技巧而是安全基线的设计“linux提权”这个关键词在热门搜索里出现频率很高但在学习日志里我更愿意把它理解为“如何安全地分配和管理权限”。面试和工作中真正考你的不是怎么从低权限用户“打”到高权限而是会不会正确配置sudo会不会把权限控制在最小范围内。sudo和su的区别必须说清楚su是直接切换成另一个用户通常是从普通用户切成root需要知道root密码sudo是在当前用户身份下以授权的方式临时执行管理员命令自己不用知道root密码只要在/etc/sudoers里有配置。修改这个文件必须用visudo命令因为它在保存时会做语法检查直接编辑很容易把系统写坏。提权失败最常见的原因是用户没加入sudo组报错信息会是“deploy is not in the sudoers file”这时候回到root下执行usermod -aG wheel deploy再重新登录即可。另一个常见问题是某些发行版默认不安装sudo工具包需要先用root运行dnf install -y sudo或者apt install -y sudo。从安全加固的角度服务器上应该修改SSH配置/etc/ssh/sshd_config把PermitRootLogin改成no禁止root直接远程登录再配合密钥认证。这个思路并不是限制自己而是减少被爆破的风险毕竟root账号是已知目标能禁用就禁用。另外要强调一点提权相关的内容要放在合法授权和系统加固的框架下来理解对企业系统做任何权限测试都需要明确的授权。4. 软件安装的三层境界在线、离线、源码编译4.1 用包管理器安装Python和telnet先分清三个包管理器接触Linux的第二天我就被一个问题难住了为什么Ubuntu装软件是apt installCentOS上是yum installRocky上又变成了dnf install其实它们都是包管理器只是属于不同系Debian系用aptRHEL系从yum走向了dnf。包管理器的价值在于帮你处理依赖关系不需要手动去下载每一个库文件。当时我需要一个新的Python环境系统自带的是Python 3.9但开发环境需要3.11。这里我推荐不要轻易去动系统Python最好的方式是使用源码编译安装或使用pyenv来管理。源码安装的步骤是固定的先安装编译依赖比如dnf install -y gcc openssl-devel bzip2-devel libffi-devel然后从官网下载Python源码执行./configure --enable-optimizations再make -j$(nproc)编译最后make install。加上--enable-optimizations会让编译时间变长很多但运行性能更好值。telnet这个命令现在经常被当成一个过时工具但它依然是网络排障的利器。比如你想确认某台服务器的3306端口通不通一条telnet 127.0.0.1 3306就能看到一个原始提示。当前大量服务器上根本不会预先装telnet客户端所以遇到新环境时先dnf install -y telnet装一下再测端口。需要特别提醒的是telnet协议本身是明文传输绝不能开启telnet服务端排障结束后最好卸载。4.2 pnpm离线安装的完整思路内核其实是“把包和依赖带进去”“linux离线安装pnpm”这个热词来自实际工作中的内网环境。生活中可能有这样的场景某个办公网段完全无法访问外网你需要在一台内网服务器上安装Node.js的包管理器pnpm这就考验你对安装原理的理解。pnpm是一个主打“快速、节省磁盘”的现代包管理器它通过硬链接和全局内容寻址存储来避免重复下载依赖。离线安装的核心思路是把安装包从有网的机器上“搬”进内网。我用的方法是在联网机器上执行npm pack pnpm得到pnpm-版本号.tgz文件然后把这个tgz拷贝到内网机器执行npm install -g ./pnpm-版本号.tgz。原理上npm的全局安装就是把包解压到全局node_modules目录并创建软链接离线时只要tgz包里的依赖都齐全就没问题。另一种更省事的方式是直接用pnpm官方提供的独立可执行文件它不需要Node.js环境下载下来是一个二进制放到/usr/local/bin下赋予执行权限就能用。这种方式非常适合离线分发只要在联网环境下载对应架构的包即可。需要注意的是任何离线安装都必须先确认架构uname -m查出来是x86_64还是aarch64要在下载时选对否则会出现“Exec format error”。4.3 虚拟机安装Linux的完整套路以及蓝屏的解决方案学习阶段最推荐的实验环境是虚拟机我当天用VirtualBox安装了一个Rocky Linux。先说基础流程新建虚拟机时类型选择Linux版本选择Red Hat (64-bit)内存建议至少2GB磁盘选择VDI格式大小建议20GB以上。如果是Windows 11宿主机遇到VirtualBox安装Linux时蓝屏第一步是更新VirtualBox到7.x版本并且关闭Hyper-V、内核隔离这些Windows虚拟化功能卸载之后把虚拟化设置调整为“仅使用VirtualBox Hypervisor”再重启基本就能解决。镜像这块建议从官方源下载ISO文件不要随便搜一个网站就下。安装过程中有一步是“软件选择”如果做服务器学习就选“Minimal Install”不带图形界面如果做桌面学习就选“Workstation”。很多人喜欢一路默认结果装出来一堆用不上的软件磁盘和内存都莫名其妙地跑满。装完系统后至少要做三件事一是dnf update -y把系统补丁打齐二是配置好主机名和时区三是创建一个普通用户并加入wheel组不要用root裸跑。做完这些再创建一个快照之后再怎么折腾都可以一键恢复。这个习惯能让你在实验时放开手脚是大胆尝试的前提。5. 系统配置与网络排障hosts、DNS和磁盘调度5.1 修改hosts文件的正确姿势以及DNS失效的坑配置内网开发环境时经常需要改/etc/hosts这个文件的格式极其简单IP地址 空格 主机名。比如192.168.1.10 gitlab.local。改它有两种方式一种是sudo vim /etc/hosts手动编辑另一种是echo 192.168.1.10 gitlab.local | sudo tee -a /etc/hosts用追加的方式避免误删原有内容。这里会比较推荐tee方式因为新手用vim很容易按错键把文件改坏。比改hosts更头疼的是DNS配置问题。有次我修改了/etc/resolv.conf里的nameserver结果一重启就变回原来的样子。这是因为很多现代Linux发行版都使用systemd-resolved服务/etc/resolv.conf其实是链接到systemd生成的动态文件。正确的排查思路是分三步先看配置是否生效。cat /etc/resolv.conf可以看到当前生效的DNS配置。其次用nslookup或dig测试某个域名是否能解析。如果发现配置被覆盖要么修改/etc/systemd/resolved.conf里的DNS字段再重启服务要么直接用nmcli操作NetworkManager来设置DNS。最粗暴的方法是删除/etc/resolv.conf这个软链接自己新建一个普通文件但这种方式会被很多系统管理员嫌弃因为破坏了系统统一管理。5.2 磁盘寻道算法是什么值得手动去调整吗“linux设置磁盘寻道算法”这个关键词让我想起当天翻内核文档时的一个发现Linux的I/O调度器是可以动态切换的。查看和设置的方法是cat /sys/block/sda/queue/scheduler输出里会列出none、mq-deadline、bfq等选项当前使用的被放在方括号里。简单解释这三个算法none也叫noop直来直去适合NVMe SSD和虚拟化环境因为硬件本身足够聪明mq-deadline兼顾读写延迟追求的是“每个请求都不能被饿死”适合大多数真实服务器bfq保证桌面系统下交互流畅文件拷贝时窗口不卡。手动临时更改的命令是echo mq-deadline /sys/block/sda/queue/scheduler但重启就失效。想要永久生效可以写udev规则或者在内核参数里追加。实际工作中除非你有非常具体的性能问题否则不建议盲目改调度器现代内核的自动选择已经很合理。把这个知识点学会更多是为了理解Linux的“可调性”系统任何一层都留给了你用标准接口观察和干预的空间这才是Linux和普通操作系统最大的不同。6. 文件操作进阶jar包替换的实战与rm删除的教训6.1 用jar和zip命令替换jar包里的文件关键是有序“linux系统替换jar包里的文件”是一个异常实用的场景。很多开发团队用的是Java技术栈平时部署的Spring Boot项目打成jar包后有时候只是改了一个配置文件或者换了一个class文件重新编译整个工程很浪费时间。这时候直接在服务器上替换jar包里的文件反而更高效前提是你要清楚jar包的本质就是一个zip文件。我的做法分四步。第一步先备份原包cp app.jar app.jar.bak这步不能省。第二步查看包内容jar tf app.jar | grep application.yml确认要替换的文件在包里的路径。第三步解压出那个文件编辑后再放回jar uf app.jar BOOT-INF/classes/application.yml。如果你更习惯zip命令也可以用zip app.jar BOOT-INF/classes/application.yml直接更新。需要特别注意的是Spring Boot的目录结构配置文件在BOOT-INF/classes/下而不是包根目录。如果擅自改错路径即使jar命令执行成功服务启动时也读不到配置。另外如果替换的是class文件请务必保证编译用的JDK版本和运行环境一致否则可能报UnsupportedClassVersionError。最后重启服务赶紧看日志确认加载的是新内容。讲真这种操作只能作为临时手段正规场景还是要走CI/CD流水线重新构建。6.2 rm -rf的教训删除文件夹命令背后的安全哲学删除文件夹是每个Linux新手都会问的问题rm -r dir可以递归删除目录rm -rf dir是在此基础上增加强制删除不提示。问题就出在-f上它默认忽略不存在的文件不询问确认手一抖就可能删错。我在日志里记录了一次差点把家目录删掉的事故。当时脚本里写了一个变量rm -rf $TMP_DIR/结果变量值为空命令变成了rm -rf /。尽管现代Linux对根目录做了保护但这个教训让我意识到删除操作必须建立习惯删除之前先ls -la看清楚目标是什么写脚本时在rm -rf之前先判断变量是否为空尽量多用rm -i交互确认甚至可以把alias rmrm -i写进~/.bashrc。更进一步如果想恢复误删文件Linux原生环境下很困难推荐在重要目录使用trash-cli删除时先进入回收站像Windows一样可以恢复。这类工具在服务器上看起来“不专业”但关键时刻能救命。实战中最稳的永远是“可以删但要先备份”。7. 虚拟化与跨系统协作WSL2、虚拟机与磁盘挂载7.1 WSL2读取Linux的U盘以及内核更新那些事WSL2在Windows上模拟出了一个轻量级Linux环境它和虚拟机的区别在于不需要单独分配内存和磁盘使用体验更像一个“可以随时打开的Linux终端”。不过WSL2也有坑最大的问题是默认情况下它不能直接访问U盘。我在日志里记录了wsl --mount的用法这也是“wsl2读取linux的u盘”这个热搜背后的答案。步骤是在Windows的PowerShell管理员权限中先执行wsl --list查看已安装的发行版然后用wsl --mount \\.\PHYSICALDRIVE1 --bare挂载物理磁盘这里的PHYSICALDRIVE1是磁盘序号可以用Get-Disk命令查看。挂载成功后进入WSL2再通过lsblk看设备手动挂载分区。用完记得wsl --unmount \\.\PHYSICALDRIVE1卸载。“wsl 2 linux内核压缩包”这个搜索词也很有指向性。WSL2其实运行在微软定制版Linux内核上平时用wsl --update就能自动更新。如果遇到更新失败需要手动下载内核压缩包解压后放到C:\Windows\System32\lxss\tools\目录里再重启WSL服务。这说明了WSL2本质上还是虚拟机只是微软帮你把虚拟化层做得极简了。7.2 从VirtualBox到嵌入式虚拟化只是起点学会VirtualBox安装Linux之后虚拟化的边界可以继续往外推。生产环境里真正部署服务器用的是KVM、Proxmox VE或商业的VMware原理上都是通过虚拟化层把一台物理机的CPU、内存、磁盘切分成多个虚拟机。从学习角度VirtualBox是最低门槛的起点它能让你理解“镜像”、“快照”、“虚拟磁盘”这些抽象概念。热词里还有“嵌入式linux项目”“linux mqtt”这些和AIoT关系密切的方向。嵌入式Linux本质上是把Linux内核裁剪后跑到ARM设备上和你在虚拟机上装系统没有本质区别只是多了交叉编译、设备树、BootLoader这些概念。而MQTT是物联网设备之间通信的常用协议在Linux上跑一个Mosquitto broker可以在局域网内快速搭建一套消息系统。这些方向对刚学完基础命令的人来说有点远但它们指出了Linux能力的延展性如果前面基础打得牢后面转嵌入式、转云计算都是很自然的事。8. 国产Linux生态与应用适配日常办公现在真能用了8.1 国产Linux发行版与镜像选择的新思路“linux国产”是近几年的大热词。国产Linux发行版如今已经不是“不能跑”的阶段而是“能不能覆盖日常办公”的阶段。常见的选择包括Deepin统信UOS的社区版、openEuler面向服务器的开源版本、麒麟软件旗下的Kylin系统。它们的共同点是都基于Linux内核底层命令和企业级发行版基本一致这让我这样的老用户反而没有什么迁移成本。镜像选择方面如果是为了学命令、练运维继续用Rocky或Ubuntu没有问题如果是为了熟悉国产化环境建议下一个Deepin或openEuler的镜像装到虚拟机里跑两天。感受最直接的是桌面体验Deepin的界面非常精美预装的软件中心覆盖了常用的办公、通讯、开发工具openEuler则更加克制默认几乎不带图形界面适合当服务器来练。国产系统的价值不只在于“能用”还在于推动了很多厂商放出官方Linux版客户端。以前在Linux上需要折腾各种兼容方案才能用的软件现在已经有不少官方原生包。换句话说用Linux作为日常系统这件事已经从一个极客实验变成越来越普遍的选择。8.2 搜狗输入法、企业微信、豆包、希沃白板这些Linux版安装时有哪些共同套路热词里出现的“搜狗输入法linux”“企业微信linux”“豆包linux客户端”“希沃白板linux版”“workbuddy linux”这些关键词反映的其实是同一个趋势应用厂商正在批量适配Linux。作为一个实际装过几款的人我总结出几个通用的安装套路。绝大多数官方Linux版软件会提供三种安装包rpm包给RHEL系、deb包给Debian/Ubuntu系、AppImage或tar.xz给所有发行版。rpm和deb安装很简单sudo dnf install xxx.rpm或者sudo dpkg -i xxx.deb遇到依赖缺失时补装依赖再重试。AppImage更省事下载后先chmod x xxx.AppImage然后直接运行就行。tar.xz包则需要自己解压把可执行文件放到/usr/local/bin或者记下来然后用ln -s做软链接。搜狗输入法Linux版安装后需要在系统设置中启用fcitx输入法框架否则打不出中文装完重启一下桌面会话通常能解决。企业微信和豆包这类应用下载官方rpm或deb包装完基本能登录使用但功能可能比全平台版本少一些比如部分会议功能、文件同步能力有阉割。希沃白板是一款教学互动工具这类专业应用愿意出Linux版说明教育场景下的Linux需求已经不容忽视。如果你用的是ARM架构的设备还有一个细节要关注比如“linux下 chromium rockchip硬件解码”Chromium在瑞芯微等ARM芯片上要启用硬件解码需要加--enable-featuresVaapiVideoDecoder启动参数这属于硬件适配的知识装上之后视频播放会流畅很多。9. 踩坑记录与面试题复盘把错误变成经验9.1 当天踩过的坑直接放在表格里当速查真正有价值的日志记录的不是“我成功了”而是“我卡在哪了”。2月3日当天的笔记里我把所有失败都整理成了一张排查表这里按同样的格式放出来。现象原因解决办法VirtualBox安装Linux时宿主蓝屏VirtualBox版本过旧Hyper-V冲突升级到7.x关闭Windows Hypervisor重启修改/etc/resolv.conf后重启DNS失效systemd-resolved接管了配置文件用nmcli或systemd-resolved配置不直接改文件脚本里rm -rf变量为空变量未赋值导致路径变成根目录删除前判断变量或使用trash-cli增加回收站jar包替换后服务启动找不到配置没有注意Spring Boot的BOOT-INF/classes路径替换时保持全路径一致替换后立即看日志搜狗输入法Linux版装完打不出中文桌面输入法框架不是fcitx安装并切换到fcitx重启会话内网机器离线装pnpm失败下载的包架构不匹配先用uname -m确认架构再选对应包这些坑的共同点是问题都不复杂但都发生在你没意识到“系统比你想的更智能”的时候。比如resolv.conf这件事我一直以为改文件是万能的后来才意识到systemd-resolved是为了统一管理DNS而设计的。很多Linux“反直觉”的问题其实都源于系统本身的抽象层级比你想的深一层。9.2 常用的Linux面试题清单现场自测最有效既然热词里有“linux面试题”我把当天做过的几道自测题分享出来每道题后面加一句“为什么考你”的解读。一是查看系统版本和内核版本有什么区别cat /etc/os-release看的是发行版信息uname -a看的是内核信息面试官想确认你是否理解这两个层级。二是如何查看端口是否被占用最佳答案是ss -tlnp它比netstat更现代能显示进程PID面试官想确认你是否用过更新工具。三是如何统计日志里某个关键词出现多少次组合grep -c或者grep keyword file.log | wc -l面试官想确认你在真实日志排查中是否熟练。四是sudo和su的区别简单来说sudo是授权机制su是用户切换工具面试官想确认你是否理解权限模型。五是可以解释一下/etc/passwd和/etc/shadow的区别吗前者保存用户基本信息对所有用户可读后者保存加密后的密码只有root可读面试官想确认你对“最小权限”的理解深度。六是如何查看系统负载建议回答同时看uptime、top或htop并且能解释load average的含义1分钟、5分钟、15分钟分别代表什么。七是如何在不停机的情况下查看某个服务的日志答journalctl -u 服务名 -f-f是持续跟踪。这些题目答起来不难但要答得让面试官觉得你是真的处理过问题就需要平时在命令行里多敲、多犯错、多总结。9.3 从“会敲命令”到“会维护一台服务器”还差哪些技能拼图日志写到晚上时我在最后列了一份“还没掌握但下一步要学”的清单避免自己停留在命令层面。这份清单包括systemd unit文件的编写也就是如何把一个Java jar包做成开机自启的服务基础的shell脚本编写用条件判断和循环把重复操作自动化网络抓包工具tcpdump的基本用法排查“通但慢”的诡异问题安全基线检查比如SSH配置、防火墙firewalld、SELinux的状态管理。这套技能拼图里短期的目标是让“一台服务器”稳定地跑起来长期的目标是能理解Linux分布在“单机管理、服务编排、容器化运行”三个阶段中的角色。当时记录的最后一行是“命令是手段稳定是目标”。现在回头看这句话仍然可以作为学习Linux的总结真正的高手不是记住了最多的命令而是在系统出问题时能最快定位到原因并且用最稳妥的方式恢复服务。写在最后2月复盘时想到的一个小建议日志翻到这我其实想给同样在学Linux的朋友一个建议不要把所有命令都记在一个大而全的cheat sheet里而是给自己做一份“错误笔记”。每次卡住超过10分钟就把问题、尝试过的方案、最终解决方式记下来。三个月后你会发现这份笔记比任何教程都值钱因为它记录的是你真实踩过的坑是专属于你的经验库。2月3日的日志带给我最大的改变是我不再害怕在命令行里输入一个不确定的命令了。Linux最友好的地方在于只要你不是root系统已经默认帮你挡掉了大部分误操作最不友好的地方在于你总觉得什么命令都是“背过的”但真正在用的永远只有那几个。真正值得花时间的是把那几个核心命令练到条件反射然后带着问题去扩展。最后再分享一个小技巧。学Linux时遇到任何不懂的配置多跑几条只读命令比如man看文档、lsblk看设备、systemctl status看服务状态。把“试试会怎样”当成默认动作你会发现Linux的学习速度会明显变快。希望这篇日志对你也有参考价值。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进