Linux命令体系化学习:从文件系统到运维实战

发布时间:2026/10/10 1:51:04
Linux命令体系化学习:从文件系统到运维实战 说实话Linux命令的学习路径坑掉过太多人了。我刚入行那会儿桌面上躺着一个又一个“Linux命令大全”的PDF收藏夹里塞满搜索引擎搜来的速查帖可真到实操的时候手还是抖的。后来带过几批实习生才慢慢想明白没人是因为背不下来才学不会Linux命令而是因为一开始就缺一套“体系的骨架”。命令是活的场景在变但你只要把骨架搭好剩下的都是往上面挂肉。这篇文章就是按这套思路写的。我不会给你丢一张几百行的命令表让你对着发呆而是带你从头把Linux常用命令的底层逻辑捋一遍命令为什么长这样、文件系统怎么组织、文本处理怎么组合、权限和安全怎么理解、日常运维怎么排查问题。适合刚接触Linux的新手也适合那些断断续续用过一段时间、总觉得知识不成体系的老朋友。看完之后再遇到陌生命令你至少知道它大概属于哪一类该往哪儿查该和什么命令搭配着用。1. 先把命令的“骨架”搞清楚认识Linux命令的通用结构1.1 一条命令为什么长这样命令、选项、参数很多人一上来就盯着命令背效率低还不说换个场景就懵。其实Linux命令的构成非常规律本质上就是一句话你要调用哪个程序你想让它怎么做你让它对谁做。翻译成命令行就是命令 [选项] [参数]打个比方你在餐厅点菜“给我来一份宫保鸡丁微辣不要花生。”这里“宫保鸡丁”就是命令你是要执行一个叫“做鸡丁”的操作“微辣”是选项它调节这个操作的行为“不要花生”也是选项或者参数的变体进一步指定细节。命令行里也是同一个道理。比如ls -l /etcls是列出目录内容的程序-l告诉它用详细列表格式显示/etc告诉它去列哪个目录。三个部分各司其职。这里有几个新手容易踩的点我必须提前说清楚选项的短横线和长横线。短选项一般是一个字母比如ls -l前面加单个短横线长选项是完整单词前面加两个短横线比如ls --all。很多命令同时支持两种写法你可以理解成一个是缩写、一个是全称。同一个命令的不同选项还经常能合并比如ls -lh等价于ls -l -h。选项的顺序。大多数情况下选项放在参数前面比如ls -l /etc但有些命令对顺序比较宽松ls /etc -l也能跑。为了稳妥建议养成“先命令、再选项、后参数”的习惯。“选项的副作用”。有些选项会让命令行为发生质变。比如rm -rf里的-r递归和-f强制单独用rm删目录是不行的加了-r才能删目录加上-f就不再提示确认。这俩凑一起破坏力极强——后面我会专门讲这个坑。理解了这个结构你再去看任何一条陌生命令第一反应就不该是“这是什么单词”而是“它由哪几部分组成、每个部分在控制什么”。1.2 获取帮助的正确姿势先man后Google新手问我最多的一个问题是“这个命令有哪些参数来着”我一般会反问一句“你查过man了吗”Linux自带了一套非常完整的帮助体系。命令记不清、参数拿不准第一时间就该用下面三招man ls # 查看ls的手册最全 ls --help # 快速查看ls的常用选项 whatis ls # 一句话告诉你ls是干嘛的man其实是一个分页查看器进去之后按q退出按/搜索关键词按n跳转下一个搜索结果按空格翻页。很多人不知道的是man文档是分章节的比如man 1 ls是用户命令man 5 passwd是配置文件格式man 8 shutdown是管理员命令。日常看命令用第1章就够了。--help则更适合“我知道这命令能干嘛但我忘了具体参数名”的场景。它打印出来的内容通常比man更短更友好优先看它。whatis适合你连命令名都记不全只模糊记得一个词的时候快速确认。还有一个几乎所有新手都会忽视的功臣Tab键自动补全。在终端里输入命令或路径的前几个字母按Tab键系统会帮你补全如果有多项匹配快速按两下Tab会列出所有候选。这能帮你省掉大量拼写错误引发的报错时间。1.3 新手训练环境怎么快速搭一个能动手的Linux学Linux光看不练是真学不会的但很多新人在“练手环境”这一步就被拦住了。我见过不少人为了装个环境折腾三天结果Shell还没摸熟就放弃了。其实你只需要满足一个条件有一个能跑bash的Linux环境。三种常见选择本机虚拟机最推荐的做法。用虚拟机软件装一个Ubuntu或Debian的桌面版操作难度低出了问题可以随手快照回滚。热搜词里那个“虚拟机安装linux系统”其实不难重点就是下载官方镜像、新建虚拟机、一路下一步装完选一下软件源。云主机买一台最低配的按量计费云服务器然后用SSH从本地连上去。好处是和你以后真实干活的环境几乎一致坏处是如果你对命令行完全陌生只有黑乎乎的SSH窗口挫败感会很强。在线Linux终端和浏览器版环境打开浏览器就能用适合零基础先找手感。但这类环境通常进程和持久化能力有限练练基础命令没问题复杂服务就别指望了。我的建议路径是先用虚拟机装一个Ubuntu把基础命令熟练一遍再用云主机或远程服务器把SSH、进程、日志这些运维场景打通。这一步的关键不是“装得多完美”而是“赶紧跑起来敲上第一批命令”。2. 文件和目录Linux入门最核心的“地盘”2.1 先看懂目录结构Linux的“家”怎么布局Windows用户刚切到Linux时最大的不适应就是没有C盘D盘了——取而代之的是一个从根开始延伸的树状目录。你看到的/就是根目录所有文件和目录都从它往下长。你不需要死记每个目录但有几个高频目录必须混个脸熟目录干什么用的一句话理解/根目录所有路径的起点相当于Windows的“此电脑”/home普通用户的家目录所在每个用户一个文件夹放个人文件/etc系统和应用的配置文件相当于Windows的注册表ProgramData/var经常变化的数据尤其是日志出问题时翻这里最勤/tmp临时文件重启后内容可能就被清了/opt第三方安装的软件不少企业软件装这里/usr系统自带的程序和数据有点像C盘里的Program Files记住这个判断逻辑配置文件找/etc日志找/var/log个人文件找/home/用户名临时文件扔/tmp。剩下的目录等你真正用到时再看也来得及。路径表达上也有几个“快捷键”得早点适应. # 当前目录 .. # 上级目录 ~ # 当前用户的家目录 - # 上一次所在的目录比如cd ..是回到上级目录cd ~是回到自己的家cd -则是跳到上一次所在的目录——这个在两层目录之间反复切换时非常好用。2.2 新手必会的高频文件操作命令记住前面说的“命令—选项—参数”结构后这些文件操作命令其实可以类比Windows里的右键菜单命令pwd # 我在哪 cd /var/log # 去哪个目录 ls # 看看目录里有什么 ls -lh # 以人类可读格式显示详细列表 cp a.txt b.txt # 复制文件 mv a.txt /tmp/ # 移动文件也可用来改名 rm a.txt # 删除文件 mkdir newdir # 新建目录 rmdir empty_dir # 删除空目录 touch file.txt # 新建空文件或刷新时间戳 file xxx # 查看文件真实类型 stat xxx # 查看文件详细信息这些命令里我想重点展开三个容易被忽略但极其实用的点。第一个是ls的细节。裸用ls看不到隐藏文件以.开头的文件要ls -a或ls -la。生产环境排查问题时隐藏配置文件往往就在那里躺着。ls -lh里的h是human-readable把字节数转成K、M、G不然一个日志文件显示成20480000字节看着头大。第二个是通配符*和?。*匹配任意多个字符?匹配单个字符。比如rm *.log能删掉当前目录所有.log结尾的文件ls file?.txt只能匹配file1.txt、fileA.txt这种单字符的。这个功能很强大但也是误操作重灾区——先ls看一遍匹配结果再动手删这是我一直给自己的硬规矩。第三个是find命令。很多新人习惯把文件翻个底朝天也找不到时才想起来用find。它的基本用法是find 路径 条件find / -name nginx.conf # 全盘找nginx.conf find /home -type f -size 100M # 找/home下大于100M的文件 find /var/log -mtime -3 # 找/var/log下3天内改过的文件记住指定路径范围越大速度越慢。新手常犯的错误是全盘find /然后等得干瞪眼实际上你稍微想想就知道应该去/etc还是/home找。这里整理一个小速查表打印出来贴显示器边上都不丢人操作命令示例注意事项看当前路径pwd路径太长时也很有用列目录ls -lh管理员常加-a看隐藏文件复制cp -r 目录A 目录B复制目录必须加-r移动/改名mv 旧名 新名跨文件系统时可能较慢删除rm -rf 目标慎用-f路径写全建目录mkdir -p a/b/c-p可以一次建多层2.3 查看文件内容的几种打开方式文件操作里最高频的需求其实是“看文件内容”。新手最常用的可能是cat但cat只适合看小文件比如配置文件、脚本源码。一旦遇到日志这种动不动几十M上百M的文件cat会把屏幕刷到怀疑人生。这时候你要学会按场景选工具cat small.txt # 看小文件直接输出 less big.log # 看大文件一页页翻按q退出 head -n 20 log.log # 看文件开头20行 tail -n 50 log.log # 看文件末尾50行 tail -f app.log # 实时跟踪文件新增内容看日志神器这里重点说tail -f它是我日常排查问题的第一工具。按下tail -f app.log后日志一旦有新行屏幕会立刻追加显示。你可以在服务运行的同时看着日志一行行滚出来然后刷新一下网页看有没有报错。退出时按CtrlC这点很多人第一次都会卡住因为按CtrlZ会让进程挂起而不是退出。如果你需要编辑文件命令行必须要会一个编辑器。我强烈建议新手先学nano因为它底部就显示快捷键进去就能写CtrlO保存CtrlX退出零学习成本。等你用熟了再转vim。不要一上来就啃vim那个学习曲线容易劝退——我见过太多新人第一节课就耗在“怎么退出vim”上了。3. 文本处理命令行真正强大的地方3.1 管道和重定向把命令串起来的工程化思维如果你只会单独敲命令那Linux对你来说只是一个花哨的文件管理器。Linux命令行真正的威力在于组合——把多个小命令通过管道和重定向串成一条流水线。先讲|管道。它的作用非常直白把左边命令的输出喂给右边命令当输入。打个比方你想在一堆文件里找到包含“error”的行。单看grep是搜索工具单看find是找文件工具但把它们用管道接起来find /var/log -name *.log | grep error这条命令的意思是先在/var/log下找出所有.log文件再把结果交给grep去筛选出含“error”的行。一步到位不用中间手动保存文件再处理。再看重定向。和控制的是输出方向把结果写入文件覆盖文件原有内容把结果追加到文件末尾。一段很常见的操作用法是echo hello test.txt # 写入hello到test.txt清空原内容 echo world test.txt # 追加world到test.txt末尾除了标准输出Linux还区分标准错误输出即程序报错信息用2重定向。新手常犯的一个错是只重定向了正常输出报错信息还是糊了一屏。正确的姿势是命令 out.log 21意思是把正常输出和错误输出都写进一个文件。管道和重定向的组合基本就是我日常写“一行命令完成一次小任务”的核心思路。比如统计一个日志文件里“ERROR”出现了多少次grep ERROR app.log | wc -l先用grep筛出所有含ERROR的行再用wc -l统计行数。一个简单的统计任务两条命令解决而且不需要写代码。3.2 grep最常用的过滤工具说完管道就绕不开grep。它是Linux里出现频率最高的过滤命令核心作用是在文本中搜索匹配的内容。常用选项grep -i error app.log # 忽略大小写 grep -v debug app.log # 反选输出不包含debug的行 grep -n error app.log # 显示行号 grep -r listen 80 /etc/nginx # 递归搜索目录下所有文件 grep -E ERROR|WARN app.log # 扩展正则匹配多个关键词grep还支持正则表达式这是它真正的杀手锏。正则不是一门编程语言而是描述文本模式的规则。比如^匹配行首$匹配行尾.匹配任意单个字符*表示重复前面的字符任意次。入门阶段掌握这几个就够用了grep ^ERROR app.log # 找以ERROR开头的行 grep bye$ app.log # 找以bye结尾的行 grep 192.168.1.[0-9] access.log # 匹配192.168.1后跟任意数字的IP不要一上来就背正则大全先用最常见的几个模式解决实际问题用着用着就会了。3.3 sed与awk编辑器与统计工具的入门如果说grep是筛选工那么sed就是文本替换和编辑工awk则是按列处理的统计工。这两个命令最初看起来有些劝退但它们解决的是非常具体的问题sed负责“把文件里的内容改成另一个样子”awk负责“从每行里抽出某一列再做统计计算”。sed最常用的操作是替换sed s/old/new/g file.txt # 把文件中所有old替换成new输出到屏幕 sed -i s/old/new/g file.txt # 直接修改源文件 sed -n 10,20p file.txt # 只输出10到20行注意区别不带-i的sed只是把改动输出到屏幕文件本身不变加了-i才会真改文件。很多新手第一次用sed直接把文件改坏了就是因为没理解这个。你在不确定效果时先跑一遍不加-i的版本确认输出没问题再加上-i执行。awk的典型用法是按列取数。默认按空白字符分隔列$1是第一列$2是第二列$0是整行。比如一个日志文件每行是“IP 时间 请求路径 状态码”你想看第二列的访问时间awk {print $2} access.log再进一步配合$NF最后一列和NF列数能做的事情更多。比如统计最后一行状态码里500出现的次数awk {print $NF} access.log | grep -c 500先抽最后一列再统计500数量。你发现没有这些命令根本不复杂难点只是在于你想清楚“有哪几步、每一步选哪个工具”。一旦建立起这种“组合拳”思维你会发现运维和排查工作的效率会上一个台阶。4. 权限与用户新手最容易懵的部分4.1 权限位到底怎么看rwx与数字权限很多新手在Linux上遇到的第一个“为什么不行”就是权限问题明明文件摆在那里却打不开、删不掉、执行不了。这时候你就要用ls -l看看权限位。输出里的第2到第10个字符分成三组每组三个对应三种身份文件属主user、属组group、其他人other。每一组里的三个字符rwx分别代表读read、写write、执行execute。这里有个和Windows思维差异很大的点也是新手最容易忽略的目录的w和x含义跟文件完全不一样。对目录来说r代表“能列出目录内容”w代表“能在目录里新建或删除文件”x代表“能进入这个目录”。你可以把目录想象成一个小区大门r是能看小区地图w是能在小区里拆建楼x是你必须有门禁卡才能进小区。没有x就算你知道小区里有什么你也进不去。数字权限是另一种表达方式r4、w2、x1把三个数字加起来得到一个权限值。rwx对应7rw-对应6r--对应4。chmod 755 file就是给属主7rwx、属组5r-x、其他人5r-x。最常见的几个数字应该形成直觉chmod 755 script.sh # 属主可读写执行其他人可读可执行常用于脚本 chmod 644 conf.txt # 属主可写其他人只读常用于配置文件 chmod 700 secret/ # 只有自己可进可读写常用私密目录 chmod 600 key.pem # 只有自己可读写密钥文件必须这样4.2 用户、组与sudo别动不动就sudo权限继续往下挖就是用户和组的管理。新手最容易犯的毛病是所有操作前面都加个sudo以为“sudo是一切通行证”。确实sudo可以让你以管理员身份执行命令但同时它也意味着你绕过了系统精心设计的权限隔离。正确的姿态是日常操作用普通用户身份需要管理员权限时才临时用sudo执行单条命令。那些动不动就sudo -i切到root的人总有一天会为自己的鲁莽付出代价——我后面在“删错文件”那节会具体讲。管理和查看用户常用的命令whoami # 我是谁 id # 我的用户ID和所属组 useradd -m newuser # 新建用户并创建家目录 passwd newuser # 设置或修改密码 usermod -aG wheel newuser # 把用户加入sudo组不同发行版组名不同 userdel -r newuser # 删除用户并连家目录一起删新人接手一台新服务器时建议第一件事就是创建一个自己的普通账号把/home下的个人目录权限理顺而不是直接问管理员要root密码。这样你后面大部分操作都能在“不会误伤系统”的范围内安全练习。chown是修改文件属主和属组的命令最常见的场景是项目文件需要给特定用户chown newuser:newgroup /app/data chown -R newuser:newgroup /app # -R递归修改整个目录这里要特别提醒chown -R的递归范围一定要想清楚再填。我曾经见过有人想改/opt/app下某个子目录的属主结果路径少打了一层把整个/opt的属主全改了之后一堆服务起不来。越是权限类的操作越要把路径写到“最小必要范围”。5. 日常运维命令从“会敲”到“能干活”5.1 进程管理ps/top/kill/nohup命令学到这里你已经能处理“文件和内容”层面的工作了。接下来是真正让你“能干活”的一层管理进程、检查系统资源、排查网络问题。这些技能说白了就是运维的基本功。先看进程。进程是运行中的程序每一个命令执行后都会变成一个进程。查看进程的标准姿势ps aux # 列出所有进程a包括其他用户u显示用户x包括无终端的 ps -ef # 另一个等价写法 top # 动态刷新按P按CPU排序按M按内存排序按q退出 htop # top的增强版更直观没装就装一个ps aux输出里最该关注的是PID进程ID、CPU、MEM和COMMAND这几列。比如你发现服务器CPU飙升第一时间就该top回车看看是哪个进程在作妖。找到问题进程后终止它是另一个高频操作kill 1234 # 默认发送SIGTERM请求进程正常退出 kill -9 1234 # 发送SIGKILL强制杀掉进程没有善后机会 killall nginx # 按进程名杀杀所有叫nginx的进程 pkill -f app.py # 按命令行里包含的字符串杀很多新手直接把kill -9当万能药。我想说的是kill -9是最后的强制手段它会跳过进程的一切清理逻辑可能导致数据没落盘、临时文件残留、运行状态损坏。所以正确的顺序永远是先killSIGTERM15号信号让进程优雅退出等几秒不死再升级到kill -9。后台运行也是一个必会技能。当你运行一个脚本或服务不想占住当前终端用nohupnohup python app.py app.log 21 nohup的意思是“忽略挂断信号”把进程放到后台。后面接的 app.log 21是把输出和错误都写进日志。这样一来关掉SSH窗口程序也能继续运行。这个组合我几乎每天都在用。5.2 磁盘与内存df/du/free“服务器明明什么都能跑却突然开始报错” —— 这类问题十有八九和磁盘或内存有关。先看磁盘df -h # 看文件系统整体空间和使用率 du -sh /home # 看某个目录总共占用多少空间 du -sh * | sort -rh | head -5 # 列出当前目录下最大的5个目录df -h输出里的/那行如果Use%到了90%以上基本就要动手清理了。常见清理目标是日志、临时文件、包管理缓存。du -sh *配合sort -rh迅速揪出罪魁祸首目录这是最实用的组合之一。再看内存free -h # 看内存和交换分区使用情况新手常被free -h的输出吓到“内存不是满了吗”。其实Linux有个特性叫缓存buff/cache它会尽量利用空闲内存做磁盘缓存提升文件读写性能。这也就是为什么你看到的内存使用率很高但系统依然流畅。判断内存是否够用的核心指标是available它表示“还有多少内存可分配给新程序”。还有一个常用命令是uptime它能看系统运行时间和负载load average。load average的三个数字分别是过去1分钟、5分钟、15分钟的平均负载。如果负载数值长期大于CPU核心数说明系统要么扛不住了要么有进程在疯狂占用资源。5.3 网络排查基础ping/ss/curl网络问题排查是另一个高频场景。作为基础入门你不需要掌握复杂的抓包但下面这几个命令必须顺手ping baidu.com # 测通不通延迟多少CtrlC停止 ss -tlnp # 查看本机所有监听端口和对应进程 curl -I http://localhost:8080 # 发一个HEAD请求看网站返回状态码ping是最基本的连通性测试。如果ping不通先别急着怪DNS、防火墙可能是因为目标主机禁ping了也可能是你自己的网络环境有问题。ping通只能说明网络层通不代表应用层可用——这是很多新人的误区。ss -tlnp是查看端口的黄金命令。t是TCPl是监听n是端口用数字显示p是显示进程信息。比如你启动服务时报“端口被占用”立刻用它看看是哪个进程占着然后决定是杀进程还是换端口。curl -I则用来快速验证一个HTTP服务是否正常比如你部署了一个网站访问curl -I http://localhost返回200 OK就说明服务基本活着返回403/500再顺着日志往下查。做这些排查动作时我习惯按逻辑层级走先看网络通不通再看端口有没有监听再看进程活没活最后看日志说了什么。每一步都用一个命令去验证很快就能把问题圈定在一个很小的范围里。5.4 从入门到能干活一个组合排查案例为了让你明白这些命令是怎么串起来干活的我带你走一遍典型的“服务突然挂了”排查流程。假设你的Web服务跑在8080端口用户反馈打不开页面而你SSH进去的第一件事是ping -c 4 localhost # 1. 本机网络栈是否正常 ss -tlnp | grep 8080 # 2. 8080端口还听没监听 ps aux | grep app # 3. 进程还在不在 systemctl status app # 4. 服务状态和最近日志 tail -n 50 /var/log/app.log # 5. 应用日志报了什么 df -h # 6. 磁盘是不是满了 free -h # 7. 内存是不是泄漏了这一套下来你基本能定位90%的问题。端口没了看进程进程没了看日志日志正常看系统资源系统资源正常回头查网络策略。这套思维比背几十条命令更能让你“会干活”。补充一个实用场景搜索热词里反复出现“linux挂载NAS存储”其实就是用mount把远程存储挂到一个本地目录持续下来就是查看挂载情况用df -h、查看文件系统类型用blkid。这种需求本质上是对“目录和文件系统组织逻辑”的延伸不复杂但很实战。6. 常见问题与排查技巧实录6.1 rm -rf 带来的惨痛教训网上一说到Linux事故十有八九是rm -rf。我用几条真实见过的翻车现场给你提个醒变量为空导致删根。脚本里写了rm -rf $DIR/*但这个变量恰好没传进来执行后变成rm -rf /*系统直接报废。这个案例已经被讲烂了但每年还在发生。路径手滑少写了一层。想删/opt/app/tmp结果敲成/opt/app /tmp多了一个空格变成“删掉/opt/app和/tmp两个目录”。在关键目录里随手rm -rf .。有人想清理当前目录下的临时文件结果.没写清楚把整个目录内容全清了。我的防翻车习惯有三条写成硬规矩删除前先ls确认目标或者先用find搜索出结果看一眼再删。路径永远写绝对路径或明确的相对路径不依赖环境变量。重要目录在删除前先做备份哪怕是改名mv /opt/app /opt/app.bak也比直接删稳。你完全可以用alias rmrm -i给删除命令加一道确认保护虽然很多人嫌烦但关键时刻真的能救命。6.2 权限和用户相关的坑权限问题能排进“新手最常踩的坑”前三名。常见的几种症状和解决办法Permission denied。先想“我是谁”whoami看一下再用ls -l确认文件属主和权限位。不要一上来就chmod 777。如果文件属于root而你只是一个普通用户sudo chown或sudo chmod才是正解。执行脚本报Permission denied。要么是文件没有x执行权限chmod x script.sh要么是脚本首行没有指定解释器比如以#!/bin/bash开头。很多人发现权限给了正确还会报错原因往往是首行写错了。sudo执行后却“command not found”。这是因为sudo的环境变量和普通用户不一样比如普通用户能用的~/bin里的命令sudo它不一定认。解决方式是写全路径或者在sudoers里保留PATH。我特别想说一下chmod 777这个行为。它看起来最省事把文件开放给所有人但代价是任何用户都能读写你这文件。在生产环境里这是一个很不专业的习惯。比起一味地改权限更应该想清楚“谁需要什么权限”然后给到最小必要范围。6.3 端口占用与进程杀不掉“端口被占用”是部署服务时最经典的报错。常见场景是重启服务时报Address already in use。正确的排查思路ss -tlnp | grep 8080 # 找到是谁占了8080端口 kill 进程PID # 先优雅退出 kill -9 进程PID # 不行就强制杀如果杀了几次进程还在很可能是进程变成了僵尸进程状态显示为Z。僵尸进程本身不占用CPU但它占着PID资源且不能被kill杀掉。真正得处理它的办法是处理它的父进程让父进程回收它或者直接重启父进程对应的服务。还有一类“杀不掉”是进程陷入了不可中断睡眠状态D通常是它在等磁盘或网络IO只能等它自己恢复或者重启机器。强行kill -9往往也没用这种时候别干等先看看磁盘是不是真的满了。6.4 一个完整的“服务变慢”排查实录最后分享一个具体的排查案例是我带人时常用的一则“综合题”。现象用户反馈业务页面打开越来越慢但服务还能访问。我上服务器的第一步是uptime看load average。如果1分钟负载远高于15分钟负载说明问题刚刚发生可能有突发流量或某进程失控。第二步top按P排序看CPU占用最高的进程。结果发现一个java进程CPU飙到了200%多。第三步ss -tlnp看它监听什么端口确认是业务服务。第四步tail -n 100看它最近的日志发现有大量“数据库连接超时”报错。第五步df -h发现磁盘没满但free -h发现内存也快不够了部分内存已经换到swap导致性能暴跌。到这一步问题的全貌已经清晰了数据库连接池耗尽引发线程堆积内存压力上升系统开始用swap拖慢所有操作。再往深挖就要去数据库侧看连接数和慢查询了。但如果当时只盯着“业务端口通不通”就很难定位到数据库这一层。这个案例想告诉你的是排查问题的思路比单条命令重要得多。命令只是你的手思路才是你的脑。从系统资源到进程状态再到日志和下游依赖一层层剥永远比东一榔头西一棒子快。说到最后我个人的经验是Linux命令别指望靠收藏夹学完。你在网上花半小时搜一个“常用命令大全”不如自己在终端里把一条命令拆开、组合、跑一遍、再故意犯错看报错记忆会深刻得多。我现在带新人从来不会让他们默写命令表而是扔一台虚拟机、一个现实任务比如“给这个目录写个备份脚本并让它每天凌晨自动跑”让他们在解决任务的过程中自然地把命令捡起来。如果你是零基础别慌就按着文章的节奏一步步来先熟悉文件操作再练文本处理然后试着去理解权限和进程最后自己搭个服务做排查演练。命令不在多能在关键时刻想得起来才是你自己的。祝你早日把Linux从陌生工具变成趁手伙伴。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询