资讯动态

Linux常用命令实战:从文件管理、文本处理到网络与性能排查

发布时间:2026/9/30 7:51:41 来源:尧图企业网站定制
平时带团队也好看网上帖子也好经常碰到一类人简历上写着“5年Linux运维”一问shell脚本写不溜vim停留在只会“i”加“:wq”服务器连不上连端口通不通都不知道怎么查。甚至有拿着10年经验的朋友日常操作还停留在改文件内容和重启服务上一旦系统出点奇怪问题就完全没头绪。圈子里的老人都爱说一句话——有些命令不会就别说自己会用Linux。这话听起来有点绝对但十年下来我越来越觉得有道理。Linux这玩意儿表面上是操作系统底层逻辑其实是“一切皆文件”你对系统的掌控能力几乎完全取决于你命令行的熟练程度。图形界面只是锦上添花真正出问题、做自动化、排查故障的时候靠的还是那几板斧。这篇文章我把这些年带新人、自己踩坑积累下来最核心的命令体系做了个梳理从文件操作、文本处理、网络诊断到性能排查再到开发运维场景里的git和docker全部用实战视角来讲。不是什么命令大全而是那些不会就等于没入门的真功夫。新手照着练会有方向老手也能回头查漏补缺。1. 为什么“命令会用”和“会用命令”是两码事1.1 十年经验未必就是高手先说个真实场景。我之前遇到一位工作十年的运维系统负载高他第一反应是重启服务器。重启完确实好了但隔几天又复发。后来我上机一看top里有个进程CPU打满查日志发现是日志文件没做切割磁盘快满了程序在不断重试写入。木有排查思路只会重启这其实就没到“会用Linux”的门槛。命令本身不难背难的是你知道在什么场景用它、输出说明了什么、下一步该查什么。这需要硬功夫。再说个对比。同样看一台数据库服务器负载高熟练的人会先跑uptime看平均负载再跑top看CPU和内存占比用iostat看磁盘等待用vmstat看上下文切换。如果这些都不会你连“病”都诊断不了更别说“治病”。所以我理解的“会Linux”不是背下来多少命令而是具备一套用命令行解决问题的思维。命令是手思维是脑两者缺一不可。1.2 一切皆文件Linux命令体系的底层逻辑Linux之所以能通过命令掌控一切核心设计就是“一切皆文件”。普通文件是文件目录是文件硬盘设备是文件网络连接也用文件来描述甚至连进程的运行状态都挂在/proc虚拟文件系统下。这个设计带来一个巨大的好处统一的操作接口。你学会操作文件的那套命令打开、读、写、关几乎就可以操作系统里的所有资源。cat /proc/cpuinfo能看到CPU信息cat /proc/meminfo能看到内存信息这在排查问题时非常有用。举个例子你想看某个进程打开了哪些文件可以用lsof -p PID。这个命令的底层就是扫描/proc/PID/fd目录下的链接。理解了“一切皆文件”很多命令就不需要死记而是能推导出来。2. 文件与目录管理的底子命令——绕不开的第一课2.1 基础三件套ls、cd、pwd这三个命令是Linux操作系统的入口90%的新手问题出在“我在哪”和“这里有什么”。pwd输出当前目录看到路径不要慌这是定位自己的第一步。cd切换目录时我强调几个容易被忽略的点cd ~回当前用户家目录cd -回上一次所在的目录这个在交替查看两个目录时非常高效。cd ..回上级目录cd ../../可以连续跳两级。路径别乱敲多用Tab补全不仅省时间还能减少拼写错误。ls我建议直接养成带参数的习惯ls -l # 显示权限、属主、大小、时间 ls -a # 显示隐藏文件以.开头的 ls -lh # 以人类可读的方式显示文件大小 ls -lt # 按修改时间倒序排列找最新修改的文件很有用新手最容易漏的是ls -l输出里第一列的权限位。比如drwxr-xr-x第一位d表示目录后面9位每三位一组分别对应属主、属组、其他人的读、写、执行权限。这块是后面chmod的基础必须看明白。2.2 增删改查与软硬链接文件操作命令cp、mv、rm用法直接但也最容易出事。复制文件我常用这几个组合cp file1.txt file2.txt # 基础复制 cp -r dir1 dir2 # 递归复制目录 cp -a dir1 dir2 # 保留权限、属主、时间戳 cp -i file1 file2 # 覆盖前询问移动和重命名共用mv这个命令可以理解为“先复制再删除原文件”。删除文件是重灾区。rm命令无法撤销建议所有人把下面这条习惯刻进DNA危险操作前先确认ls -l看清楚再删。生产环境建议mv到一个临时目录而不是直接rm确认没问题再清空。我个人的习惯是alias把rm换成rm -i让它每个都问一句多一步确认能避免很多灾难。链接这块ln命令要区分软链接和硬链接ln -s /data/logs /var/log/app # 软链接符号链接类似快捷方式 ln /data/target.txt /data/hard.txt # 硬链接同一个inode的多个入口软链接失效很常见用ls -l能看到链接指向如果目标被删了链接会红闪。硬链接只在同一文件系统内有效平时用得少但理解它有助于理解文件系统的底层结构。2.3 权限管理chmod、chown、umask多用户系统里权限设置不对轻则服务起不来重则数据泄露。chmod有两种玩法chmod 755 script.sh # 数字法属主rwx7属组rx5其他rx5 chmod ux script.sh # 符号法给属主加执行权限数字法背后的计算逻辑r4w2x1相加得出最终值。7表示rwx全有6表示rw5表示rx4表示只读。755和644是文件权限的黄金组合目录755保证可进入文件644保证可读但不可执行。chown改属主属组常用在部署web应用时chown nginx:nginx /data/www -R # 递归修改整个目录umask是创建文件时的默认权限掩码。系统默认022表示创建的文件是644目录是755。设置成0027可以收紧权限让“其他人”没有读权限。这个在日常安全加固时一定要知道。3. 文本处理能力——Linux高手和普通用户的分水岭3.1 vim服务器上的编辑利器vim是Linux服务器上几乎必装的编辑器很多配置文件都要靠它来改。但新手最大问题是根本退不出去。这里给一套保命口诀# 退出场景 :q # 未修改直接退出 :q! # 放弃修改强制退出 :wq # 保存退出 ZZ # 保存退出按两次大写Zvim的模式要弄明白普通模式、插入模式、命令行模式。启动后默认在普通模式按i进入插入模式能打字按Esc回到普通模式在普通模式输入冒号才进入命令行模式。日常够用的一套操作gg到文件头G到文件尾dd删除当前行yy复制当前行p粘贴/关键词搜索按n下一个:set nu显示行号批量替换:1,10s/old/new/g表示第1到10行全部替换我见过很多人用vim改配置改完一保存发现格式错了这是因为在Windows下编辑过的文件带了\r换行符。处理方式sed -i s/\r$// config.conf这类小坑积累多了处理文本的速度自然就上来了。3.2 grep与管道从日志里捞信息日志排查是Linux运维的日常。grep就是大海捞针的那根针。常用姿势grep ERROR app.log # 基本查找 grep -i error app.log # 忽略大小写 grep -r timeout /data/logs/ # 递归查找整个目录 grep -n timeout app.log # 显示行号 grep -A 5 ERROR app.log # 显示匹配行及后面5行 grep -B 5 ERROR app.log # 显示匹配行及前面5行管道|是Linux命令组合的万能胶。一个命令的输出变成另一个命令的输入就能实现复杂的处理链路。比如统计日志中某个关键词出现的次数grep ERROR app.log | wc -l或者找出访问量最高的IPawk {print $1} access.log | sort | uniq -c | sort -nr | head -10这条命令看起来复杂实际拆开每段都能看懂awk提取第一列IPsort排序uniq -c去重并计数sort -nr按数字倒排head -10取前10。这就是Linux文本处理的组合拳。3.3 sed与awk流式处理与列数据提取sed和awk是文本处理三剑客之二也是很多人觉得难啃的部分。其实抓住核心场景就能快速上手。sed核心是“流式编辑”不打开文件就能改文件内容sed -n 10,20p file.txt # 打印第10到20行 sed -i s/192.168.1.1/192.168.1.2/g config.conf # 全局替换 sed -i /^#/d config.conf # 删除所有以#开头的注释行awk核心是“按列处理”默认用空白字符分列awk {print $1} access.log # 打印第一列 awk -F: {print $1, $3} /etc/passwd # 用冒号分割打印用户名和UID awk {sum $4} END {print sum} file.txt # 对第四列求和-F可以指定分隔符这是awk非常灵活的地方。比如处理/etc/passwd文件按冒号分割能提取用户名、UID、家目录等信息。实战场景从nginx访问日志里统计每个接口的调用量最简单的写法是awk {print $7} access.log | sort | uniq -c | sort -nr | head -20$7是请求的URL路径整条命令从几百MB的日志中快速找出热点接口这就是命令组合的价值。4. 网络诊断命令——连不通的时候怎么办4.1 ping基础连通性测试ping命令用来测试网络连通性基于ICMP协议。它属于“先做排除法”的第一步。ping -c 4 192.168.1.1 # 只在Linux下-c指定次数 ping -i 0.5 192.168.1.1 # 每0.5秒发一次包看输出重点关注是否收到reply延迟是多少有没有丢包。ping通了说明网络层通ping不通并不代表所有问题可能对方禁了ICMP也可能是链路问题需要用其他工具进一步定位。4.2 telnet/nc端口连通性检查这个命令被问得非常多telnet ip 端口怎么用。语法很简单telnet 192.168.1.100 3306如果端口是通的终端会显示连接成功的提示Connected此时处于TCP连接状态可以Ctrl]再输入quit退出。如果端口不通会提示连接被拒绝或者直接超时。但现代Linux发行版很多默认不装telnet客户端而且telnet本身不安全明文传输所以排查端口时我更常用ncnc -vz 192.168.1.100 3306 nc -vz -w 3 192.168.1.100 80 # 3秒超时-v显示详细信息-z只检测端口不发送数据。输出succeeded表示端口通。还有一个纯bash的奇技淫巧不需要额外安装工具timeout 3 bash -c echo /dev/tcp/192.168.1.100/3306 echo 端口通 || echo 端口不通这个/dev/tcp是bash内置的虚拟文件利用“一切皆文件”的原理进行TCP连接。在很多受限环境里非常管用。4.3 curl/wget命令行请求利器排查web服务时curl是比浏览器更清爽的工具。curl -I https://example.com # 只显示响应头 curl -v https://example.com # 显示详细交互过程 curl -X POST -d nametest http://192.168.1.100/api curl -o /dev/null -w %{http_code}\n http://192.168.1.100 # 只输出状态码curl -v能看到TLS握手、请求头、响应头定位HTTPS证书问题、重定向问题都靠它。wget更适合下载文件比如wget -c https://download.example.com/package.tar.gz # 断点续传5. 性能与进程监视——top命令的深度使用5.1 top命令关键指标解读服务器变卡了第一件事就是跑top。但很多人只会看一堆数字不知道什么意思。我拆开讲。top输出的第一行是系统概况当前时间、运行时长、登录用户数、系统平均负载load average。平均负载有三个数分别是1分钟、5分钟、15分钟的平均值。如果三个数都持续大于CPU核数说明系统扛不住了。第二行是进程信息看总进程数和运行中进程数。第三行是CPU状态us用户态占比、sy系统态占比、waIO等待占比、id空闲占比。wa高说明磁盘IO是瓶颈。第四行和第五行是内存total总量、free空闲、buff/cache缓存。Linux会尽量把空闲内存用来做缓存所以free数字小不用担心重点是看available那一列。top默认按CPU使用率排序按M键按内存排序按P键按CPU排序按1查看每个CPU核心的情况按q退出。这些快捷键必须记住。补充一个常用场景定位CPU占用高的进程后可以用top -Hp PID查看该进程内的所有线程这对Java应用排查线上问题尤其重要。5.2 进程管理与信号查看进程列表ps命令经典组合ps -ef # 全格式列出所有进程 ps aux # BSD风格u显示CPU/MEM占比 ps -ef | grep java # 找特定进程 ps aux --sort-%cpu | head -5 # 找CPU占用前5进程通信靠信号kill不是“杀掉”而是发送信号kill PID # 发送SIGTERM请求优雅退出 kill -9 PID # 发送SIGKILL强制终止 kill -HUP PID # 发送SIGHUP常用于让进程重新加载配置我强烈建议能先killTERM信号就先别上kill -9给程序机会清理资源避免数据丢失。如果TERM杀不动再考虑kill -9。后台运行和任务管理jobs # 查看后台任务 bg %1 # 把任务放到后台 fg %1 # 放回前台 nohup command # 退出终端后继续运行nohup配是跑长任务的标配输出重定向到文件里方便事后查看nohup ./start.sh /data/app/logs/start.log 21 21这里的含义是把标准错误也重定向到同一个文件这样报错信息不会丢。这个细节很多人忽略排查故障时发现日志里半个字都没有就是因为没加。6. 开发运维场景下的必修命令6.1 git的日常操作回顾现在纯运维也得碰代码git成了跨岗位的必修课。日常高频操作就是这几个git clone gitgithub.com:user/repo.git git status # 查看工作区状态 git add . # 暂存所有改动 git commit -m 描述 # 提交 git push origin main # 推送远程分支 git pull origin main # 拉取最新代码容易出差错的是分支和回滚git branch -a # 查看所有分支 git checkout -b new-branch # 新建并切换分支 git stash # 临时保存改动切分支前必用 git log --oneline -10 # 查看最近10条提交 git reset --hard HEAD~1 # 回退到上一个提交慎用会丢代码线上出问题要紧急回滚时git reset --hard虽然快但会丢掉提交记录。更稳妥的方案是用git revert 提交ID生成一个新的反向提交既回退了代码又保留了历史。这一点我写代码的朋友实践下来都说好。6.2 Docker常用命令容器化已经成为Linux服务器的标配docker命令不会等于少了一条腿。镜像相关docker pull nginx:1.25 docker images # 查看本地镜像 docker rmi nginx:1.25 # 删除镜像 docker save -o nginx.tar nginx:1.25 # 导出镜像文件 docker load -i nginx.tar # 导入镜像文件容器生命周期docker run -d --name web -p 80:80 -v /data:/usr/share/nginx/html nginx docker ps # 查看运行中的容器 docker ps -a # 查看所有容器含已退出 docker stop web # 停止 docker start web # 启动 docker rm web # 删除容器 docker exec -it web bash # 进入容器内的shell docker logs -f web # 跟踪容器日志docker run那几个参数值得记牢-d后台运行-p端口映射-v数据卷挂载--name指定容器名字。有数据卷的容器被删除后数据还在外面这也是容器持久化数据的基本做法。现在很多场景下containerd作为更底层的容器运行时被提起ctr命令和crictl命令服务k8s为主日常单机使用docker的命令体系已经足够两者并不冲突。理解成docker把镜像构建、命令行体验做得更完整而containerd更精简、更底层即可。6.3 如何快速装一个可用的Linux环境新手学命令最怕“光看不练”。我建议直接装虚拟机练习下载Linux镜像比如社区长期维护的CentOS替代方案或Ubuntu LTS版用虚拟机软件跑起来。练习时不一定要图形界面在命令行环境里把以上命令挨个敲一遍两周基本能形成手感。装系统过程中最常见的坑有三个分区不知道怎么做直接选自动分区网络没连通检查虚拟机网卡和DHCP换镜像源速度慢换成国内软件源。这三个解决了环境基本就稳了。7. 常见错误与避坑经验7.1 权限类问题报错最多的就是permission denied。很多新手第一反应是加sudo但搞清楚为什么才是重点。排查顺序用ls -l看文件属主和权限位。确认当前用户是不是文件属主或者属于属组。目录的执行权限有没有打开——很多人只改文件权限忘了目录没有x权限根本进不去。服务进程是不是用错了用户运行比如web服务需要用nginx用户读文件。生产环境尽量不用root跑应用用专属用户加最小权限权限不够再加这是安全底线。7.2 命令路径与软件包相关输入命令提示command not found除了真的没安装还有可能是路径问题。比如安装了Python但直接敲python不行可能是装到了/usr/local/bin而当前用户PATH里没包含它。用which、whereis查路径which python3 whereis nginx包管理这一层不同发行版命令不同。用Debian系如Ubuntu用apt install用RHEL系如AlmaLinux、Rocky Linux用dnf install老系统用yum。有些软件默认不装比如telnet客户端、net-tools包需要自己装。我之前在一台精简版系统上发现连ifconfig都没有就是因为没装net-tools。7.3 数据挽留与日常习惯“rm删错文件”是每个Linu

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑