☰
Linux常用命令实战:从故障告警到服务器快速排查
2026/10/21 4:58:20 网站建设 项目流程

今晚下班刚到家,手机连续弹出三封报警邮件,某台测试服务器的CPU使用率直接飙到95%。我放下包打开电脑,从SSH登录、看负载、查进程、定位日志,到杀掉异常进程、临时重启服务,前后不到十分钟。整个过程没有图形界面,全靠终端里敲命令。如果你也经历过类似场景,就知道Linux常用命令不是背单词,而是救命的工具。

这篇内容不是什么官方文档的搬运,是我多年在服务器上“摸爬滚打”攒下来的实操记录。从最基础的cd、ls到排查问题时的组合用法都会涉及,重点讲清楚每个命令背后解决什么问题,以及怎么避开我踩过的坑。不管你是刚接触Linux的学生、从前端转运维的开发者,还是自己搭过个人服务器的爱好者,这篇内容应该能帮你把零散的命令串成一套完整的处理思路。

1. 为什么你背了那么多命令,遇到问题时还是不会用

很多人学Linux命令的方式是打开一篇“常用命令大全”,从头背到尾。结果真上了服务器,面对一堆输出不知道看什么,更不知道下一步敲什么。问题不在于命令不够多,而是没有建立起“遇到问题该用什么命令组合“的思维方式。

1.1 命令不是记忆单元,是解决问题的工具

我们先看图。假设你登录服务器后想知道”这台机器现在状态怎么样“,你会做什么?新手通常会敲一个top,看到一堆数字,然后退出。老手会先看负载平均值(load average),如果1分钟负载比5分钟、15分钟高很多,说明是刚刚涌进来的请求;如果三个数都很高,说明持续拥挤了。接着敲free -h看内存还有多少,敲df -h看磁盘满了没有,再配合uptime确认机器跑了多久。

这就是命令组合的雏形。top回答“谁在消耗CPU”,free回答“内存够不够”,df回答“磁盘有没有写满”。单条命令只是工具,一串命令组合起来,才能拼出完整的故障画面。

经验:在脑海里维护一张“问题-命令”对照表,而不是命令-解释对照表,这样遇到实际故障时反应速度会快很多。

1.2 为什么图形界面下也要会用命令

现在很多Linux发行版都有不错的桌面环境,文件管理器、系统监视器都有。但服务器上基本没有图形界面,而且远程操作、自动化脚本、定时任务这些场景,命令是唯一入口。举个最简单的例子:你写了个备份脚本,每天凌晨3点把数据目录打包上传到远端存储,这个场景没有命令根本跑不起来。

就算你日常用的是带桌面的Linux,命令也常常更快。批量重命名100个文件、统计某个目录下所有图片的大小之和、查找三天前修改过的配置文件,用图形界面操作非常痛苦,命令几秒钟就能完成。掌握常用命令,不是让你抛弃图形界面,而是给你多一条更高效的路径。

1.3 命令的通用规律,让你不用死记硬背

Linux命令虽然多,但有规律可循。大多数命令遵循“命令 + [选项] + [参数]”的结构,比如ls -l /home就是列出/home目录的详细信息。短选项用单个字母加短横线,比如-a,可以合并成-la;长选项用两个短横线,比如--all,语义更清楚。获取帮助可以用man 命令名查看完整手册,或者命令名 --help查看简版说明。

还有一个规律:命令往往由“做事的工具”和“处理文本的管道”配合使用。几乎所有命令的输出都可以通过管道符号|交给另一个命令继续处理,比如ls -l | grep "txt"就是列出文件后,筛出名字里带txt的行。理解了管道这把“万能胶水”,很多复杂任务都能串起来。

2. 文件与目录操作:服务器上的一切都是文件

Linux的设计哲学里,一切都是文件——普通文件、目录、设备、甚至进程信息都以文件形式呈现。所以文件与目录操作是Linux的基本功,这部分熟练度直接决定你做其他事情的上限。

2.1 切换目录与查看内容:cd、pwd、ls

cd是切换工作目录,这个命令很少有人不熟,但有几个细节值得注意。cd -可以回到上一次所在的目录,在两层目录之间来回切时非常省事;cd ~回到当前用户的家目录;cd ..返回上一级目录。如果你在脚本里写了cd,要记得判断是否成功,因为目录不存在时cd会报错,脚本没加判断会继续往下走,可能产生意外的副作用。

pwd打印当前工作目录的绝对路径。看似简单,在写脚本、配环境变量时特别有用,因为你经常需要确认自己到底在哪个目录下。我遇到过有人把脚本里的相对路径写错了,就是因为没先执行pwd确认位置。

ls是列出目录内容,不加参数时只显示名字。我几乎总是用ls -lah组合:-l列出详细信息(权限、链接数、属主、大小、修改时间),-a显示隐藏文件(以.开头的文件),-h把字节数转成人类易读的K、M、G。查看输出时,重点留意第一列的权限位和最后一列的修改时间。排查问题时,文件大小和最近修改时间往往是第一线索。

2.2 常见误区:rm的坑与cp的重要选项

rm用来删除文件或目录,是Linux里公认的高危命令。我见过不少人在生产服务器上rm -rf /或者rm -rf $变量,变量没赋值时变成了删根目录。避免方法是用绝对路径时反复确认,在脚本中用变量时先检查变量是否为空,或者干脆用rm -i让每次删除都先询问。更稳妥一些,删除重要目录时先移动到/tmp下的某个回收目录,观察几天没问题再真正删掉。

cp复制文件或目录,-r选项表示递归复制目录,不加这个选项复制目录会报错。cp -i在目标文件已存在时会询问是否覆盖,这个习惯能救命。我有个真实经历:某次要覆盖一个配置文件,路径写错成另一个相似文件,正是-i选项的提示让我发现目标不一致,避开了配置被覆盖的故障。

mv移动文件或重命名,同分区时只是修改目录记录,速度快;跨分区时实际发生复制+删除,大文件会明显感觉到卡顿。如果移动的是个大文件目录,提前用df -h确认目标分区的剩余空间够不够,否则会失败。

2.3 查找文件的三种方式:which、find、locate

which用来查找可执行文件的位置,本质是搜索环境变量PATH包含的目录。你敲python却提示找不到,或者不确定系统里默认的python是哪个版本,which python直接看路径就行,非常直观。

find是强大的文件查找工具,语法是find 路径 -name "文件名"。几个高频用法:按名字找find /etc -name "*.conf",按类型找find / -type f -name "access.log",按时间找find /logs -mtime +7(7天前修改过的文件,常用于清理日志),按大小找find / -size +200M。用-mtime清理旧日志是老运维的常规操作。

locate通过预先建立的数据库快速查找,速度比find快得多,但数据库不是实时更新的,新创建的文件可能暂时查不到,需要先执行updatedb更新数据库。在没有locate命令的系统中,可以用find替代,速度慢但结果准确。

2.4 打包压缩:tar、zip、unzip

服务器上最常用的打包工具是tar。常用组合:tar -czvf archive.tar.gz /path表示打包并gzip压缩(-c创建、-zgzip压缩、-v显示过程、-f指定文件名),解压时用tar -xzvf archive.tar.gz。注意-f后面最好直接跟文件名,顺序别放错;解压前可以用tar -tzvf archive.tar.gz先列出包内容,确认没有解压到当前目录覆盖同名文件的风险。

zip和unzip在交换文件时常用,zip -r archive.zip /path可以对目录递归压缩,unzip archive.zip解压到当前目录。Linux环境下中文文件名的zip包有时会出现乱码,根源是编码不一致,可以用unzip -O GBK archive.zip指定编码解压。

提示:无论打包还是解压,都要注意操作目录。tar解压时默认解压到当前目录,如果包内是散落的大量文件,会把当前目录搞得很乱。最好先建一个目录再进去解压。

3. 权限与用户管理:多用户系统的基本规则

Linux从设计上就是多用户、多任务系统。权限和用户管理是Linux安全的基础,不懂这套规则,很容易出现“明明有文件却读不了”或者“别人能改你的文件”这类问题。

3.1 理解文件权限位:rwx与数字表示

执行ls -l时,输出第一列的第一位表示文件类型(-普通文件、d目录、l符号链接),后面9个字符分成三组,对应属主、属组、其他人三类用户的权限。r读、w写、x执行,顺序固定。

数字表示法把r记作4、w记作2、x记作1,每组相加得到0到7的数字。chmod 755 file就表示属主rwx(4+2+1=7)、属组rx(4+1=5)、其他人rx(4+1=5)。7是777权限,表示所有人都能读写执行,这在服务器上是非常危险的操作。给网站目录赋权限时,我习惯用755(目录)和644(文件),既能正常运行又不给多余权限。

3.2 修改权限与属主:chmod、chown

chmod修改权限,除了数字方式,也可以用符号方式,比如chmod u+x script.sh给属主增加执行权限,chmod a-x file去掉所有人的执行权限。调试脚本时经常遇到“Permission denied”,多半是脚本没有执行权限,chmod +x script.sh即可。

chown修改文件属主和属组,chown user:group file同时改两者。比如把网站目录从root改为www用户所有,命令是chown -R www:www /var/www。-R表示递归应用到所有子文件和子目录,不写时只改目录本身。分享到这里的知识点比较密集,但每一条都是排查权限问题时必须掌握的。

3.3 用户与用户组管理:useradd、usermod、passwd

新增用户常用的命令是useradd -m -s /bin/bash username,-m创建家目录,-s指定默认shell为bash。用户创建后需要设置密码,passwd username交互式设置。usermod -aG groupname username把用户添加到附加组,常见场景是把某个运维账号加入docker组或sudo组。

我建议新建用户时不要直接用root干所有事情,日常操作使用普通账号,需要管理员权限时再用sudo。这样能减少误操作对整个系统的影响。userdel -r username删除用户并同时删除家目录和邮件目录,注意删除用户是个不可逆操作,执行前要确认。

3.4 sudo与/etc/sudoers的合理配置

sudo允许普通用户以其他用户身份(默认是root)执行命令,最常见的用法是sudo command。比如sudo systemctl restart nginx重启Nginx服务。首次在特定终端使用sudo会提示输入当前用户的密码,之后一段时间内缓存凭据。

修改sudo权限需要编辑/etc/sudoers文件,但用visudo命令编辑更安全,它会在保存时做语法检查,防止写错导致整个sudo不可用。给某个用户全部管理员权限可以加一行username ALL=(ALL) ALL,给某个用户组加sudo权限则写%groupname ALL=(ALL) ALL。很多发行版默认把wheel组或sudo组的成员设为可sudo,所以添加用户到组后,新开终端才生效。

4. 进程与性能排查:服务器变卡时怎么办

服务器变卡是运维最常遇到的问题。卡的原因可能是CPU被某个进程占满、内存不够触发swap、磁盘满了没法写入,或者网络带宽被占满。下面按“现象-命令-处理”的思路拆解排查路线。

4.1 查看进程全貌:ps、top、htop

ps -ef列出当前系统所有进程的详细信息,每一行是一个进程。配合管道过滤可以快速找到目标进程,比如ps -ef | grep nginx找出所有和nginx相关的进程。使用grep时会连带显示grep自身这条进程,如果想要更干净的结果,可以用pgrep -l nginx或者过滤时排除掉grep那一行。

top动态显示系统资源占用情况,默认按CPU占用率排序。按P按CPU排序,按M按内存排序,按1查看每个CPU核心的使用情况,按q退出。负载平均值(load average)三个数字分别是1分钟、5分钟、15分钟的平均负载,如果持续超过CPU核心数,说明系统忙不过来了。

htop是增强版,信息更直观,可以上下滚动选择进程,按F9可以直接杀掉,颜色区分内存和CPU。好用的工具值得花点时间配置,比如调整成树状视图会更清晰,但临时排查时top完全够用。

4.2 杀掉进程的正确姿势:kill、killall、pkill

kill PID默认向进程发送SIGTERM(15)信号,相当于礼貌请求进程自己退出。如果进程不响应,再用kill -9 PID发送SIGKILL强制结束。顺序很重要,不要一上来就kill -9,有些进程没有机会清理临时文件或释放锁,可能导致数据损坏。

pkill可以通过进程名结束进程,比如pkill -f "python app.py",-f表示匹配完整命令行,这样就能精确命中。killall nginx结束所有名为nginx的进程,在需要重启一组worker进程时很实用。杀进程时最怕误杀,所以先ps -ef | grep 关键词确认PID列表,再执行删除。

4.3 内存与磁盘排查:free、df、du

free -h查看内存使用情况,-h让数字更易读。重点看available这一列,它表示在不触发swap的情况下还能给新进程多少内存。如果available长期低位,考虑加内存或排查内存泄漏。swap分区长期被大量占用意味着物理内存不够用,应用性能会明显下降,这往往是该扩容的信号。

df -h查看磁盘分区的总体使用情况,df -h /只查看根分区。磁盘写满是常见的故障源,一般建议空间使用率不要超过80%,否则影响性能,并可能触发各种问题。du -sh *统计当前目录下每个子目录或文件的占用大小,-s汇总、-h易读。清理空间时,先从du -sh找出大目录,再逐层进入定位大文件。

4.4 实时性能监控:iostat、netstat、ss

iostat查看磁盘I/O读写状态,iostat -x 1每秒刷新一次详细状态。如果%util接近100%,磁盘可能成为瓶颈。服务变慢但CPU和内存都正常时,磁盘I/O是最需要关注的排查点。

netstat和ss用于查看网络连接状态。ss -tunlp比较常用:-t显示TCP、-u显示UDP、-n显示数字地址和端口、-l只显示监听状态的连接、-p显示关联的进程。排查“端口被占用”时,这条命令最直接。netstat -tunlp类似,新环境没有ss的可能性较小,两者选一个就行。

5. 文本处理三剑客:grep、sed、awk

服务器上大量数据以文本形式存在:日志文件、配置信息、命令输出。文本处理能力直接决定运维效率。这三个命令是我每天都在高频使用的,值得花时间系统学习。

5.1 grep:从文件或输出中筛选关键行

grep按行匹配文本,最简单的用法是grep "关键词" 文件名。查看日志时最常用的是grep ERROR app.log把错误行筛出来。grep -i忽略大小写,grep -n显示行号(方便后面用sed定位),grep -v反向匹配(排除某些行),grep -o只输出匹配到的部分而不是整行。

配合管道可以做一些很实用的操作,比如ps -ef | grep java | grep -v grep过滤出java相关的进程,或者history | grep docker在历史命令里搜索docker相关的操作。grep -r "关键词" /path递归搜索目录下所有文件内容,排查代码或配置问题很好用。

5.2 sed:按模式处理文本的行编辑器

很多人见到sed就躲,其实日常工作用到的命令不超过五个。基本格式是sed '操作/匹配/动作' 文件。sed 's/旧/新/g' file全局替换文本,把旧内容全部替换为新内容;sed -i直接修改源文件,不用打印到屏幕;sed -n '10,20p' file打印第10到20行;sed '10d' file删除第10行,注意默认只是把处理后的结果输出,不写-i不会影响原文件。

举一个实际场景:某次排查问题时,需要把所有日志中的IP地址替换成脱敏格式,命令就是sed -i 's/192\.168\.1\.[0-9]*/IP_ADDR/g' app.log。替换时不加-i先预览一遍输出,确认无误再加-i操作,这个习惯帮我避免过几次低级错误。

5.3 awk:按列处理文本的编程工具

awk本质上是按列处理文本的编程语言,不需要学太多,掌握基础就够用。它的核心结构是awk '条件 {动作}',默认按空白分割每一行,$1是第一列、$2是第二列、$NF是最后一列。

查看某个进程内存占用时,可以先ps aux找到那一行,再用awk提取对应列。比如ps aux | grep app.jar | grep -v grep | awk '{print $2}'直接得到PID,方便在脚本里用。awk '{sum += $1} END {print sum}'可以对某一列求和,统计日志里某个数值的总量时很管用。awk的默认分割符也可以改,awk -F':' '{print $1}' /etc/passwd按冒号分割提取用户名。

5.4 管道与重定向:把命令串起来

管道|把前一个命令的输出接到后一个命令的输入,形成命令链。tail -f access.log | grep ERROR实时跟踪日志并筛出错误行,这是排查线上问题时的经典组合。重定向则把输出写到文件或追加到文件:command > output.log 2>&1把标准输出和标准错误都写到文件,适合在脚本里保存日志;command >> output.log追加写入,不覆盖旧的日志。

一个综合场景:统计今天的访问日志里有多少个独立IP,命令是cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr。整个过程从原始日志到最终排行,每一步都清晰可查。学习管道和重定向,就好比把单个命令的积木搭成更大的结构,能做的事情一下就变多了。

6. 网络管理:远程连接与本地服务排查

无论是远程登录服务器,还是排查服务端口连接异常,网络命令都是必不可少的。下面从连接、监听、域名解析几个方面说明最常用的用法。

6.1 远程登录与文件传输:SSH与scp

ssh username@host是远程登录到另一台Linux服务器的标准方式,首次连接时如果出现指纹确认提示,确认是目标机器即可输入yes。生产环境建议用密钥认证(公钥放在服务器的~/.ssh/authorized_keys),比密码登录更安全且更省心。生成密钥的命令是ssh-keygen -t ed25519,然后ssh-copy-id username@host把公钥推送到远端。

scp基于SSH协议复制文件,scp file.txt username@host:/path/把本地文件传到远端,scp username@host:/path/file.txt ./把远端文件拉下来,scp -r dir username@host:/path/递归复制整个目录。在大文件传输时,断点续传可以用rsync代替,rsync -avz --progress source/ username@host:/dest/支持增量传输,网络中断后重跑能继续未完成的部分。

6.2 端口监听与服务检查:ss与lsof

ss -tlnp查看哪些端口正在监听,-tTCP、-l监听、-n数字端口、-p显示进程。看到端口被占用但不知道是谁占用的场景,一条ss -tlnp就能解决。lsof -i :端口号更直接:lsof -i :8080显示占用8080端口的进程PID和名称。杀掉占用端口的进程时,先确认该进程是否属于当前业务,避免误杀。

6.3 DNS与连通性排查:ping、nslookup、curl

ping host检查目标主机是否可通,但要注意很多服务器禁ping,不通不一定是网络问题。nslookup domain查询域名的解析IP,排查DNS问题时能看到是哪台DNS服务器返回的答案。curl是一个全能工具,curl -I http://example.com看响应头,curl -v http://example.com显示详细的请求过程,curl -X POST -d "key=value" http://example.com/api发送POST请求。

排查“网页打不开”这类问题,我习惯按顺序查:先ping看通不通,再nslookup看域名解析对不对,然后curl -I看Web服务响应没有,最后看应用日志。这种排查顺序能把网络层面的问题快速隔离出来。

7. 系统信息与日志:了解机器当前的运行状态

服务器状态的全貌需要组合多个命令来拼凑。系统信息告诉我们这台机器是什么配置、跑了多久、内核版本、时区时间等,日志则记录系统与应用运行过程中发生的事件。

7.1 查看系统基本信息:uname、hostname、uptime

uname -a显示完整的系统信息,包括内核版本、主机名、操作系统类型。排查驱动兼容性或者确认某些软件是否支持当前内核时,会用到这些信息。很多软件对内核版本有最低要求,看到明确的报错信息后能快速对照确认。

hostname显示或临时设置主机名,hostnamectl set-hostname newname可以永久改主机名。在一堆服务器中,能见名知意对运维很重要。uptime显示系统已运行时间和负载,如果服务器运行时长远超预期,说明一直处于高负载状态,或者曾经被重启但没人注意到。

7.2 日志查看:tail、less、journalctl

tail -f /var/log/nginx/access.log实时滚动查看日志,排查访问异常时很常用。tail -n 200显示最后200行,适合查看最近的事件;head则从头部开始看,用处相对少一些。

日志文件太大时用less逐屏查看,按空格翻页、按/搜索关键词、按q退出。功能上替代了cat直接大文件输出的笨方法。journalctl管理systemd日志,journalctl -u nginx.service -f实时查看某个服务的新日志,journalctl --since "1 hour ago"查看最近一小时的日志,配合时间范围排查故障很方便。

7.3 时间与时区:date、cal

date显示当前系统时间,date -s "2025-01-01 12:00:00"手动设置系统时间(需要root权限,且生产环境建议使用NTP同步,避免手动改时间引发的问题)。timedatectl list-timezones查看可用时区,timedatectl set-timezone Asia/Shanghai设置时区。服务器时区不一致是常见的小坑——明明日志时间对不上,结果发现是时区设置不同。我一般登录新机器后第一件事就是确认时区和时间同步是否正确。

8. 一个完整的排查实战:从告警到解决

前面拆解了很多单独的命令,这一部分把它们串成一个真实可复现的排查过程。场景来自某次晚间值班经历,过程稍作简化,但思路完全保留了当时排查时的逻辑顺序。

8.1 场景描述与初步判断

晚上十点左右,报警提示某台业务服务器的CPU使用率连续5分钟超过85%。登录服务器后,我执行的第一个命令是uptime,看到负载平均值为6.8、5.2、3.1,说明负载在快速上升,确实是刚刚开始拥挤。接着用top查看CPU占用最高的进程,发现一个名为java-app的进程CPU使用率高达300%——多核环境下表示占用了多个核心。

此时第一个判断是应用本身出了问题,但还不能确定是流量增长还是代码bug。我先看服务是否还健康,用curl -I http://127.0.0.1:8080/health检查本地健康检查接口,发现返回500,说明应用确实出了问题。

8.2 逐步收窄:从资源瓶颈到应用进程

用free -h确认内存没有压力,df -h确认磁盘空间充足,排除了系统资源类故障。接下来用journalctl -u java-app -f实时看应用日志,看到大量OutOfMemoryError类型的堆栈,结合进程占用多核CPU的情况,初步认定应用在反复尝试分配内存并触发GC循环。

此时用ps -ef | grep java拿到该进程的完整启动命令,找到-Xmx2g堆内存配置。继续看日志发现它加载了某个数据文件,文件大小约为2.5GB,超过堆内存上限。定位到根因后,先临时重启进程让服务恢复,再把问题反馈给开发同事。整个过程用时大约十五分钟,没有花哨的操作,就是组合运用前面讲的命令。

8.3 快速复盘:排查顺序为什么是这样

把上面的过程拆开看,排查顺序是“系统整体→资源水位→进程定位→日志分析→根因确认”。这种从宏观到微观的顺序,能保证每一步的错误面都在收窄,而不是东敲一下西敲一下。遇到问题时,先从uptime和top看整体,确认是不是资源问题;如果不是,再看进程和日志。结构化排查比记住所有命令更关键,命令只是实现思路的载体。

9. 常见问题与排查技巧实录

下面这些问题,是我在实际使用和带新手的过程中反复遇到的。整理成速查表,方便你遇到类似问题时直接对照。

9.1 “Permission denied”与“command not found”是一回事吗

“Permission denied”是权限不够,文件存在但当前用户没有相应权限;“command not found”是命令不存在或不在PATH里。前者用ls -l看权限并用chmod调整,后者用which确认命令是否安装,没装就先安装。要注意有时候二者表现相似,比如执行一个没有执行权限的脚本,报错是“Permission denied”;而输入了一个不存在的命令,报错是“command not found”。排错时要根据提示先区分是哪一种,再对症下药。

9.2 端口被占用时怎么办

排查端口占用,最直接的方法是lsof -i :8080。如果没有输出,用ss -tlnp | grep 8080再确认。找到PID后,用ps -ef | grep PID确认这个进程是什么再决定是否处理。杀掉占用进程用kill -9 PID,但不建议一杀到底,最好看清进程是否属于当前业务。如果是别人部署的服务,贸然杀掉影响会很大,先沟通确认再操作。

9.3 磁盘空间明明显示满了,du却找不出大文件

这种情况通常在Linux下遇到:df -h显示分区使用率接近100%,但du -sh *统计下来总量对不上。原因多半是有进程删除了文件但仍然保持打开状态,文件在进程退出前不会释放空间。用lsof | grep '(deleted)'找到已经被删除但仍被占用的文件,确认对应进程后重启或结束进程即可释放空间。这个坑比较容易忽略,排查磁盘问题时如果du和df结果不一致,优先想到这个原因。

9.4 如何避免误删文件:几个实用习惯

第一,正式删除前先移动到临时目录,观察一段时间确认没问题再删,这在清理旧日志、旧备份时尤其有用。第二,在脚本里使用变量时,先判断变量不为空再执行删除,避免变量为空导致删错路径。第三,少用rm -rf这个组合,能不用就不用,即使用了也要反复确认路径。第四,重要的服务器建议开启回收站逻辑,其实本质是“软删除+定期清理”策略,能极大减少误删风险。

9.5 后台执行任务的正确姿势:nohup与screen/tmux

长时间运行的任务在SSH断开后会中断,这是新手经常踩的坑。简单方案是用nohup command &让命令忽略挂断信号并放到后台运行,输出可以重定向到文件。更好的方案是用screen或tmux,它们是终端复用工具:在tmux里开启新会话,任务在里面运行,断开SSH后重连,tmux attach回去还能看到原来的界面。执行数据库迁移、大数据任务这类需要长时间等待的操作时,tmux比nohup灵活得多,因为后台也可以随时回去看进度、终止任务。

10. 后续还能怎么提高:用命令组合解决实际需求

很多人在学完基础命令后会陷入“每个命令都认识,但不知道能做什么”的尴尬期。我的建议是:不要按命令背,按“需求”找答案。比如“找出目录里最大的10个文件”“统计一个接口的平均响应时间”“把服务器上所有超过90天的日志打包压缩再删掉”等等,这些问题自然会把命令组合起来。这里分享几个我在实际工作中经常用到的组合场景,都是可以直接“抄作业”的。

清理磁盘空间时,我会用du -ah /var/log | sort -rh | head -20先找出最大的日志文件。sort -rh按人类易读的数值反向排序,head -20取前20名。分析访问日志时,awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10统计访问量最高的前10个IP。监控服务状态时,systemctl status nginx | head -20快速确认某个服务的启动时间、运行状态和最近的日志行。

这些组合本质上都是“取数→处理→展示”的逻辑:用cat或grep取数,用awk/sed处理,用sort/head/tail展示。命令熟悉以后,你会发现大部分需求都可以用这种方式拆解成可组合的小步骤。

最后说一点个人体会:Linux常用命令的核心不是把所有的-a、-l选项都背全,而是建立起“问题场景→命令选择→输出解读”的完整链路。刚上手阶段,建议不要在笔记本上抄命令列表,而是记录“今天解决了什么问题,用了哪些命令”。遇到不熟悉的选项,man是随身手册。用得多了以后,很多命令会变成肌肉记忆——毕竟我在排查时,十有八九用的还是top、free、df、grep、awk、tail这一套,它们不是最花哨的工具,但绝对是最可靠、最有效率的那批。

希望这篇内容对你实际操作有帮助。如果你也在Linux上摸爬滚打过,应该知道真正让人成长的,不是条理清晰的知识点,而是每一次踩坑后复盘的那几分钟——这才是命令手册之外最有价值的部分。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询