搞 Linux 的朋友都有过这种经历刚接触那会儿命令抄了满满几页纸一到真要干活的时候脑子一片空白快捷键更是只用 CtrlC 和 CtrlV连中断程序用的 CtrlC 都是在网上搜“怎么终止卡死的命令”才学会的。我用 Linux 当主力系统也有不少年头了踩过的坑比看过的教程多这里把我认为最值得掌握的 Linux 命令和终端快捷键从头到尾梳理一遍从文件操作到文本处理从进程管理到网络排查再配上实测有用的组合技巧。这篇内容适合刚入门但不想只停留在“能开机”阶段的新手也适合那些已经会几个常用命令、想系统补齐短板的朋友。1. 用好命令的前提先建立正确的学习思路1.1 命令不是背出来的理解命令的三层结构很多人学 Linux 命令最大的误区是“背命令”。今天背了个ls -la明天背了个ps aux后天忘了到底有没有空格、要不要加横杠结果一通操作直接坐蜡。我个人的体会是Linux 命令的底层逻辑极其统一绝大多数命令都逃不过一个格式命令名 [选项] [参数]命令名决定“我要干什么”选项决定“怎么干”参数决定“对谁干”。拿最普通的ls来举例ls -la /var/log命令名是ls选项-l表示以长格式展示详细信息-a表示显示隐藏文件参数/var/log指定了要看的目录。一旦你适应了这个结构以后遇到任何新命令第一反应不应该是“硬背”而是“先找帮助”。man或者命令 --help永远是第一资料源。这个思路有点像学做饭命令就是“炒、蒸、炸”选项是“大火、中火、小火”参数是“食材”。你不需要背几千道菜谱掌握了基本动作就能临场发挥。Linux 命令本身也是这个道理核心命令也就几十个真正让你效率飞起来的是组合和变通。1.2 终端环境和 Shell 的选择命令是跑在 Shell 里的Shell 相当于命令的“翻译官”。默认的 Shell 绝大多数发行版都是 Bash但作为一个经常折腾的人我强烈建议新手优先熟悉 Bash因为它是最通用的服务器上基本都有脚本兼容性也最好。等你把 Bash 玩顺了再去碰 Zsh、Fish 这些更花哨的体验会好很多。另外两个小细节很影响体验一是终端模拟器的选择我用的是系统自带的终端加一个自定义配色不折腾那些漫天特效的主题稳定省心最重要二是.bashrc这个文件它就是你的命令环境预设别名、PATH、提示符样式都可以在这里配置。每次改完记得source ~/.bashrc不然要重新登录才生效这个坑我踩过不止一次。1.3 一份够用很久的命令清单为了让你有个整体感先放一张我平时整理过的核心命令矩阵。不需要现在全记住收藏起来后面章节会逐个拆解。类别代表命令解决什么问题文件操作ls、cd、cp、mv、rm、find看文件、切目录、复制、移动、删除、查找文本处理cat、less、tail、head、grep、sed、awk、sort、uniq查看内容、筛选、去重、统计、流式修改系统监控ps、top、free、df、du、systemctl看进程、内存、磁盘、服务状态网络排查ping、curl、ss、lsof、ssh、scp连通测试、接口调试、端口排查、远程管理效率神器Tab、CtrlR、CtrlZ、alias、管道、xargs少打字、快速切换、批量处理这张表对应的就是 Linux 日常运维和开发里 90% 的高频场景。下面我开始逐个展开。2. 文件与目录操作最常用也最容易翻车2.1 ls 的进阶玩法别只停留在 lsls大概是每个 Linux 用户敲的第一条命令但很多人两年后还只会ls和ls -l。我把自己最常用的几个变种列出来ls -lah-h选项把文件大小显示成人类可读的 K、M、G而不是一长串字节。看目录大小时你会感谢这个选项。ls -lt按修改时间倒序排列配合-l能快速找出“最近动过哪个文件”。排查问题时比如配置改了没生效这个命令比stat还直观。ls -d */只看当前目录下的一级子目录不把所有文件都列出来。这在目录里文件很多、只想找文件夹时特别省眼。ls *.log配合通配符用。*匹配任意字符?匹配单个字符[abc]匹配指定字符集合。比如ls config?*.conf可以匹配config1.conf、config-test.conf这类带编号的配置文件。一个我实测很实用的场景日志目录里文件多到屏幕刷不完用ls -lt /var/log/ | head -15只看最新的 15 个文件一眼定位问题日志。2.2 cd 的高效技巧来回切换不再痛苦cd看起来简单但几个细节不掌握你的操作速度会慢一大截。首先是cd -这个命令会在“当前目录”和“上一次所在目录”之间来回跳。我经常在项目目录和日志目录之间来回切一个cd -直接跳回去不用把长路径再敲一遍。然后是cd ~回家目录这个大家都知道。但很少人用cd ~/Downloads/这种带波浪号的绝对定位方式在任何位置都能直接回到家目录下的指定路径。如果你经常要跳到一个很深的路径比如/opt/software/xxx/conf/yz/建议用软链接。在~/bin/下建一个快捷方式ln -s /opt/software/xxx/conf/yz ~/yz cd ~/yz这就像给文件夹在桌面上建了个快捷方式不用每次都输那么长一串。2.3 find 与 grep定位文件和内容的两把利器如果说ls是“我知道文件在哪看一眼目录”那find就是“我不知道文件在哪全盘搜”。find的常见套路# 在当前目录下找所有以 .log 结尾的文件 find . -name *.log # 找最近一天内修改过的文件 find . -mtime -1 # 找大于 500M 的文件常用于排查磁盘占用 find / -size 500M # 找到文件并直接删除慎用建议先不删先找出来看一遍 find /tmp -name *.tmp -exec rm -f {} \;grep则是内容检索大杀器。我最常用的是# 在日志里搜 ERROR 关键词忽略大小写显示行号 grep -in error app.log # 递归搜索整个目录找某个函数或配置项在哪些文件里出现过 grep -rn timeout /etc/nginx/ # 反向匹配排除某类干扰行 grep -v ^# /etc/ssh/sshd_configgrep -v这个反向匹配在查看配置文件时极其好用直接过滤掉注释行剩下的全是有效配置。我排查ssh配置时几乎必用不然密密麻麻的#注释会让人眼瞎。2.4 复制、移动、删除的正确姿势和防呆操作这块必须重点说因为rm 是 Linux 新手翻车率最高的命令没有之一。我自己刚学 Linux 时有一段刻骨铭心的经历某次执行rm -rf /home/young/temp/*结果因为路径写错差点把家目录整个删掉。从那以后我给自己定了三条铁律删除之前先ls确认路径再执行rm。能用相对路径的时候尽量用相对路径但关键删除操作一律用绝对路径并反复核对。能不删就不删用mv移动到/tmp目录“缓刑”几天确认没问题再做清理。这个习惯救了我好几次。复制和移动也有一些技巧cp -r递归复制目录cp -a保留权限和时间戳mv在同一个文件系统内是瞬间完成的不会真复制数据所以你移动大目录时不用担心耗时。跨文件系统移动时实际上是“复制删除”时间取决于数据量。还有两个命令容易忽略du -sh *可以看当前目录下每个子目录或文件占多大空间df -h看整个磁盘分区的使用率。排查“磁盘满导致服务挂掉”这类问题这两个命令是黄金组合。3. 文本查看与处理命令服务端排查问题的基本功3.1 tail、head、less日志阅读三件套服务器上排查问题百分之八十的时间都在跟日志打交道。日志文件动不动几百 M用cat直接读会把整个屏幕刷烂而且终端会卡住。正确做法是看尾部最新内容用tail -n 50 app.log或者直接tail -f app.log实时跟踪。-f这个选项就像“盯着文件看”文件一旦有新行写入就立刻显示排查线上问题时一边tail -f一边复现 bug效果极佳。看头部内容用head -n 20 app.log通常在日志文件被截断或需要看启动信息时用。文件太长需要翻页阅读用less而不是more。less支持上下方向键翻页支持/关键词搜索支持g跳转首行、G跳转末行。进入less后按v还能直接用编辑器打开当前文件按q退出。我自己的习惯是小文件用cat中等文件用less大文件直接greptail组合。反正一句话别在终端里硬生生刷几千行日志。3.2 grep、sort、uniq三分钟统计出你要的数据文本处理最实用的一个组合是“grep 过滤 → sort 排序 → uniq 去重 → wc 计数”。这个组合在分析日志时堪称神器。举个例子你的应用日志里记录了每个请求的响应码想知道今天返回 500 错误的有多少次grep 500 access.log | wc -l想统计访问量排名前 10 的 IPawk {print $1} access.log | sort | uniq -c | sort -rn | head -10逐段拆解一下awk {print $1}取出日志每行的第一个字段通常就是 IPsort排序让相同 IP 相邻uniq -c去重并统计每个 IP 出现次数sort -rn按次数倒序排列head -10取前十。这个管道链我用的频率非常高它背后的逻辑是一个命令解决一个小事然后用管道把它们串起来。这也是 Linux 哲学的核心不需要写复杂的程序就能完成数据分析。3.3 sed 和 awk流式修改和文本处理的进阶力量很多初学者一听到sed和awk就头大觉得是“上古神术”。说句实话如果不做特别复杂的文本解析你只需要掌握几个招式就够了。sed最常用的场景是“批量替换文本”。比如把配置文件里的旧端口 8080 全部改成 9090sed -i s/8080/9090/g config.conf注意-i是直接修改原文件如果不加-i只会打印替换结果到屏幕原文件不变。我建议第一次批量替换时先不加-i跑一遍确认输出无误再真正落盘。另外s是替换动作g表示全局替换如果不加g每行只处理第一个匹配到的内容。awk最常用的场景是“按列取数据”。它的默认分隔符是空白字符所以awk {print $1}就能取出第一列。如果你想以冒号分隔比如处理/etc/passwd文件用awk -F: {print $1}。再进阶一点awk可以进行求和、平均值等简单统计比如对文件第二列求和awk {sum $2} END {print sum} data.txt3.4 实战演练一条命令分析日志中的异常趋势纸上谈兵没意思放一个我遇到过的真实问题。某次服务在半夜出现大量超时需要快速确认是偶发还是持续恶化。我先tail -n 5000 app.log | grep -i timeout | wc -l看看最近 5000 条日志里超时有多少条得到一个总数后再按小时统计分布tail -n 50000 app.log | grep timeout | awk {print $4} | cut -c2-13 | uniq -c这里稍微解释下$4是日志里的时间字段cut -c2-13截取其中 “日/月/年:时” 的部分uniq -c把同一分钟内的超时聚合成一行。看到分布是“某个时间点突然飙升”还是“均匀散布”基本就能判断是并发尖峰还是持续性故障。这种组合命令看起来很“酷”但本质就是前面那些小命令的拼接。只要熟悉每个小工具你也能随手写出类似的排查命令。4. 系统状态与进程管理知道你的机器在干什么4.1 ps、top进程查看的正确姿势服务器变卡了第一反应应该是看进程和资源占用。ps是静态快照top是动态刷新。ps我用得最多的是这两个变种# 查看所有用户的全部进程附带完整命令行参数 ps aux # 精确匹配某个进程 ps -ef | grep javaps aux输出里每一列的含义USER是进程用户PID是进程号%CPU和%MEM是资源占用STAT是进程状态S休眠、R运行、Z僵尸最后COMMAND是完整命令。看到STAT列出现Z要警惕这是僵尸进程。僵尸进程杀不死只能处理它的父进程或者重启机器。后面常见问题里我会专门讲。top是动态的打开后按P按 CPU 排序按M按内存排序按q退出。实时观察哪个进程在“吃 CPU”一眼就能看穿。如果你的发行版支持htop装一个显示更友好彩色界面还支持鼠标操作我几乎一上服务器就敲htop。4.2 kill、jobs、CtrlZ进程控制三板斧知道哪个进程有问题下一步就是管住它。kill命令不少人以为就是“杀死进程”其实它本质是“发信号”。kill -15 PID请求进程正常退出给它时间和机会做清理操作这是默认格式。kill -9 PID强制杀死内核直接回收资源进程没有机会保存任何状态。属于最后通牒。kill -1 PID让进程重新加载配置文件常用于 Nginx、守护进程类服务。实际排查时我建议先用-15等几秒没反应再上-9。别一上来就-9有些程序会丢数据或者留下脏文件。另外有个快捷键组合容易被忽略CtrlZ是把当前运行的前台进程挂起不是终止。挂起后敲jobs能看到挂起的任务列表bg %1把它放到后台跑fg %1把它拉回前台。我经常用这个“暂停→后台化”的操作来临时腾出终端比另开一个会话方便得多。4.3 free、df、du内存和磁盘的体检工具内存问题用free -h查看-h选项同样是把数字转成人话。再看一眼free输出里的available这个才是真正“可以随时分配给新程序”的内存量别死盯着free那列。磁盘问题用df -h看整体用du -sh *定位具体目录。组合拳是这样打的df -h # 先发现 / 分区使用率 99% du -sh /var/log/ # 再定位到 /var/log 很大 du -sh /var/log/* | sort -rh | head -5 # 找到最大的那几个日志文件然后该清理清理该加磁盘加磁盘问题定位清晰明了。sort -rh里的-h表示按人类可读的大小排序-r倒序记住这个大文件查找技巧比一条条看输出高效得多。4.4 systemctl新时代的服务管理标准现在主流发行版都用systemd对应的管理命令就是systemctl。你不用再记service httpd restart还是/etc/init.d/nginx restart了统一一套systemctl status nginx # 看服务运行状态 systemctl start nginx # 启动 systemctl stop nginx # 停止 systemctl restart nginx # 重启 systemctl enable nginx # 设置开机自启 systemctl disable nginx # 取消开机自启我遇到最多的情况是“服务怎么又挂了我要看它挂了多久、为什么挂”。systemctl status nginx会直接显示最近几条相关日志比单看进程列表更有价值。如果服务状态显示failed再加上journalctl -u nginx -n 50查看最近 50 行服务日志基本就能找到原因。journalctl也是 systemd 家族的好工具journalctl --since 1 hour ago能看过去一小时的系统日志排查那些“不明原因”的问题时这个比翻/var/log/messages省力得多。5. 网络诊断与远程操作排查问题的另一只眼5.1 ping、traceroute、curl连通性测试三兄弟网络类问题排查顺序从近到远。先确认本机网络通不通ping -c 4 某网站地址-c 4指定发包次数免得ping无限运行你要手动按 CtrlC。ping能通只能说明 IP 层通了不代表业务端口通。测端口连通性我一般用curl -v telnet://目标IP:端口通了会显示连接成功不通会卡住或报错。这个技巧比telnet命令本身还常用因为很多精简系统没装 telnet 客户端。traceroute则是看数据包经过了多少跳、在哪一跳掉链子了。不过日常工作里用得不算频繁大部分是运维排查链路质量时才碰。真正的高频选手是curlcurl -I http://localhost:8080 # 只看响应头确认服务活着没 curl -X POST -d keyvalue http://localhost/api # 发 POST 请求测试接口 curl -o /dev/null -w %{http_code} http://localhost:8080 # 只看状态码-w参数可以自定义输出格式把 HTTP 状态码、响应时间等打出来我写接口测试脚本时经常用。5.2 ss、lsof端口和连接的定位神器服务器上出现“端口被占用”“连接数爆满”用ss和lsof定位。ss是现代 Linux 推荐用的命令替代老的netstat。查看所有监听端口ss -tlnp-t只看 TCP-l只看监听中的端口-n不解析服务名数字端口更清晰-p显示占用端口的进程号。一次执行你能看到哪台服务器上的哪个端口被哪个进程占着排查启动失败说“端口已占用”时必用。如果想知道某个具体 PID 打开了哪些文件用lsof -p PID。想查谁占用了某个端口lsof -i :8080直接列出所有占用该端口的进程比ss更直观一些。这两者配合使用端口类问题基本手到擒来。5.3 ssh、scp远程操作和文件传输的标配远程管理服务器没有花哨就是 SSH。高频操作我总结一下ssh userhost # 常规登录 ssh -p 2222 userhost # 指定端口登录非默认 22 端口时 ssh -i ~/.ssh/id_ed25519 userhost # 用密钥登录个人强烈建议把“密码登录”改成“密钥登录”。方法很简单本地生成密钥对ssh-keygen -t ed25519然后把公钥内容追加到服务器的~/.ssh/authorized_keys里之后登录再也不用手输密码而且比密码更安全。文件传输用scpscp localfile.txt userhost:/tmp/ scp -r project/ userhost:/home/user/project/-r用来传目录。如果文件很多很大可以改用rsync它支持增量传输断点续传效率高得多。传一个几十 G 的目录rsync -avh --progress project/ userhost:/home/user/project/是唯一靠谱的选择。5.4 实战一次完整的端口排查过程放一个实战过程你照着这套思路走一遍就懂网络排查了。场景启动服务时提示“端口 8080 已被使用”。第一步找到占用的进程ss -tlnp | grep 8080输出会显示类似users:((java,pid12345,fd96))说明是 java 进程 12345 占用了 8080。第二步确认这个进程是什么项目ps -ef | grep 12345看到命令行就知道是哪个服务了。第三步决定是杀掉旧进程还是换端口。如果是旧版本残留kill -15 12345过两秒再ss -tlnp | grep 8080确认端口释放。如果杀不掉再上kill -9。这套流程从发现问题到解决控制在两分钟以内。新手容易卡在第一句“ss 是什么”上练几次后就形成条件反射了。6. 终端快捷键把操作效率翻倍的核心技巧6.1 必须刻进肌肉记忆的六个快捷键命令再熟如果只用鼠标复制粘贴效率还是起不来。终端快捷键是我觉得“学了立刻就有回报”的投入。先记这六个快捷键作用使用场景Ctrl C终止当前前台进程某个命令卡住不动了果断中断Ctrl Z挂起当前进程临时腾出终端稍后用 fg 恢复Ctrl D退出当前 Shell相当于输入 exit也用于结束输入流Ctrl L清屏比输入 clear 快屏幕刷满了来一下Ctrl A光标跳到行首改命令开头时不用按半天方向键Ctrl E光标跳到行尾改命令结尾时快速直达这里最容易被误解的是CtrlC它不是“复制”而是“发送中断信号”。很多从 Windows 过来的人下意识按 CtrlC 想复制结果把正在跑的任务中断了血的教训。6.2 历史命令检索Ctrl R 和 ! 系列你敲过的每条命令都被记住了。history命令可以看全部历史但列出几百行没意义关键是快速调用。按Ctrl R进入反向搜索模式输入关键字终端会从历史里匹配最近一条包含该关键字的命令再按Ctrl R继续向前翻按回车直接执行。!!代表上一条命令在权限不够时很有用先执行systemctl restart nginx提示权限不够然后直接sudo !!重新执行上一条并用 sudo 提升权限。!$代表上一条命令的最后一个参数。比如你刚cat /etc/nginx/nginx.conf现在想用 vim 编辑它直接vim !$不用再输入一遍长路径。这三个技巧在敲长命令时能省不少时间。尤其sudo !!用了就回不去。6.3 Tab 补全键盘上有最省力的按键Tab 键是终端里最被低估的按键。输命令时按一下 Tab 会自动补全模糊匹配时按两下 Tab 会列出所有候选。我实测一个好处你再也不用记住那些奇长的文件名和命令全称了。比如系统里有个nginx-module-vts-0.2.2.tar.gz输完前面的nginx按一下 Tab整个文件名瞬间补全连中间那些容易拼错的连字符和下划线都不用管。Tab 补全对cd和路径同样有效配合目录软链接我切换目录基本不超过三秒。初学阶段可能觉得“按两下 Tab 是麻烦”但一个月后你会发现自己已经离不开它了。6.4 自定义别名把高频命令缩成短口令别名alias是效率提升的隐藏大招。我自己的.bashrc里长期躺着这几行alias llls -lah alias grepgrep --colorauto alias ..cd .. alias ...cd ../.. alias pgps -ef | grep设置很简单直接在~/.bashrc里追加一行然后source ~/.bashrc生效。alias ..cd ..这个设计我一直强烈推荐敲三个点以内就能退到上级目录配合cd -使用目录切换几乎是零思考成本。pg这个别名则让我不用每次敲完ps -ef再拼一个管道符加 grep直接pg nginx就能看进程。注意别覆盖掉真正有用的命令名。比如有人会把alias rmrm -i设置成每次删除都问一下新手期可以这样保护自己但老手反而觉得多余。我的建议是宁可 alias 加长命令也别轻易改写系统命令本身。7. 管道重定向与工作流从“会用命令”到“会解决问题”7.1 管道和重定向把命令串起来前文反复出现的|管道符它的作用是把左边命令的输出作为右边命令的输入。这是 Linux 最强大的设计之一也是“组合命令”的基础。重定向符号同样重要# 覆盖写入文件 echo hello /tmp/hello.txt # 追加写入文件 echo world /tmp/hello.txt # 丢弃输出2/dev/null 丢弃错误信息 ls /nonexist 2/dev/null这里的数字1是标准输出2是标准错误是覆盖是追加。记不住默认等于1覆盖即可。把日志输出到文件、把错误信息过滤掉这些是写自动化脚本的必备基本功。7.2 xargs批量处理文件的最强助手xargs的作用是把输入数据转化成命令参数。它和管道的区别很微妙管道传递的是“文本流”而xargs让前一条命令的输出变成后一条命令的参数。经典的场景删除一大批符合条件的旧文件。find /data/logs -name *.log -mtime 30 | xargs rm -f这条命令会把所有 30 天前的.log文件名提取出来交给rm -f处理。相比find -execxargs更高效它会把参数攒一批再执行。另一个我常用来批量压缩或批量传输的场景cat file_list.txt | xargs -P 4 -I {} scp {} userhost:/backup/-P 4表示同时跑 4 个进程-I {}指定把每一行内容替换成{}。这个写法虽然看着复杂但实际处理成百上千个小文件时效率提升明显。有需求的时候再回头查-I的具体用法不急着背全文。7.3 一个顺手的小脚本把常用排查步骤固化下来与其每次都敲一遍组合命令不如把最常用的步骤写成小脚本。我自己在~/bin/下放了一个qlog.sh专门快速分析应用日志#!/bin/bash LOG_FILE$1 KEYWORD$2 echo 关键词 $KEYWORD 出现次数 grep -c $KEYWORD $LOG_FILE echo 最近 20 条匹配内容 grep $KEYWORD $LOG_FILE | tail -20 echo 按分钟统计分布 grep $KEYWORD $LOG_FILE | awk {print $NF} | cut -c2-13 | uniq -c | tail -20给脚本加执行权限chmod x ~/bin/qlog.sh然后在.bashrc里加上export PATH$HOME/bin:$PATH之后在任何目录都能直接qlog.sh app.log timeout一次搞定日志分析。这种“把重复操作脚本化”的习惯比多记一百条命令还值得培养。8. 常见问题与排查技巧实录8.1 command not found八成是 PATH 的问题敲命令提示command not found先别慌检查两件事命令是否安装、PATH 里是否包含安装路径。比如你刚编译装了个软件到/opt/app/bin直接敲app肯定不行要么/opt/app/bin/app要么把它加进 PATH。排查方法echo $PATH # 看当前 PATH which nginx # 看某个命令在哪个目录 find / -name nginx -type f # 全盘找命令的真实位置which输出为空说明命令要么没装要么不在 PATH 里。这个排查流程我几乎每周都会用到。8.2 No space left on device磁盘满了但 du 找不到“设备没有空间但du一看明明目录都不大”这种情况多半有文件被删除但进程还在占用。Linux 里进程打开一个文件后再删掉目录里看不见但磁盘空间就是释放不掉因为文件还在被进程持有。排查手段df -h # 确认哪个分区满了 lsof | grep deleted # 找到正在占用已删除文件的进程找到 PID 后重启或 kill 那个进程空间立刻释放。这个坑很隐蔽我第一次遇到时愣是找了一个小时后来才想起lsof | grep deleted。8.3 僵尸进程杀不死ps aux里看到许多Z状态的进程PID 无法被kill -9杀掉。原理是僵尸进程本身已经终止只是父进程没有回收它的退出状态在内核里留了个空壳。解决办法是看它的父进程 PIDPPIDps -o pid,ppid,stat,cmd -p 12345然后处理父进程要么让父进程正常退出或重启要么先kill父进程。父进程一结束僵尸孤儿就会由 init 进程接管并统一回收。治标不治本的是如果父进程是代码写得不严谨的长期运行程序僵尸会反复出现这时就该去修代码或重启对应服务了。8.4 端口明明没监听却提示端口被占用这类问题和“僵尸进程”有一点像也可能是 TIME_WAIT 状态的连接堆积。用ss -tlnp | grep 端口看只能看到监听中的端口但ss -tan | grep 端口能看到包括 TIME_WAIT 在内的所有状态。如果确认是 TIME_WAIT 过多常见于高并发短连接服务可以调整内核参数net.ipv4.tcp_tw_reuse但这属于网络调优的范畴一般裸写业务代码的朋友不用太纠结知道有这回事、能用ss -tan排查就够了。写在最后的一点经验带过不少半路入行的朋友我发现大家最容易卡住的不是“哪个命令学不会”而是“学了想不起来用”。我的建议是不要按命令表背要按场景练。比如今天想清理日志就顺手学du、find、rm明天服务起不来就边查边学systemctl、journalctl、ss。用需求驱动学习命令不知不觉就长在手里了。快捷键也一样别指望一次记住所有。先强迫自己每天用CtrlR搜历史命令、用 Tab 补全、用sudo !!提权一周后手就有记忆了。一个月后再回头看你会发现自己敲命令的速度比原来快了一倍不止。这套东西没有门槛唯一的代价就是多敲几下键盘。