ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux常用命令实战指南:从排障到精通的系统化训练

Linux常用命令实战指南:从排障到精通的系统化训练 简介这是一份面向Linux终端操作员、技术支持工程师及初学者的命令速查文档聚焦日常运维与脚本编写中的高频操作帮助读者在遇到具体任务时快速定位合适命令提升终端操作效率。资源包内含1个docx文件大小约18KB以表格化条目整理为主便于检索与对照练习。内容覆盖文件与目录的创建、删除、复制、移动系统状态查看与进程控制文本内容分页查看与编辑网络连通性测试与网卡配置以及压缩解压、权限修改、所属用户与组调整等操作同时整理了重定向、管道、通配符等符号指令的基本语法并附带常用快捷键说明对构建复杂shell脚本有直接参考价值。目前已有320人学习下载适合希望系统掌握Linux终端技能、需要随手查阅命令用法的读者收藏使用。1. 从一次凌晨三点的排障说起Linux 常用命令到底该练到什么程度很多人第一次意识到 Linux 常用命令的重要性不是在课堂而是在生产环境里。凌晨三点一台跑着业务的服务器磁盘告警你手上只有一条 SSH 会话没有图形界面没有监控大盘能依靠的只有df、du、lsof、find这几条命令。敲得快不快、准不准直接决定这次故障是十分钟收尾还是拖到天亮。这就是「Linux 系统常用命令与操作详解」真正要解决的问题不是背下多少条命令而是在具体场景里能立刻调出正确的那一条并且知道它的参数边界在哪。这篇文章面向三类人刚接触 Linux、想系统补齐命令基础的零基础同学日常靠 xshell、终端做运维、需要一份能随时翻查的操作手册的工程师以及准备 Linux 面试题、想把「常用命令大全」从死记硬背变成条件反射的求职者。下面按「先建立认知 → 再动手复现 → 最后避开血泪坑」的顺序展开每一条命令都尽量落到真实场景而不是干巴巴的语法罗列。2. 文件与目录操作把 cd、ls、find 用到不假思索文件系统操作是 Linux 命令的地基。绝大多数人卡住不是因为命令不会而是因为路径、权限、通配符这三件事没理顺。这一章把最常用的文件目录命令拆开讲重点放在参数组合和真实用途上。2.1 目录导航与查看cd、pwd、ls 的参数组合cd看似最简单但配合cd -可以在最近两个目录间来回跳排查问题时非常省事。pwd用来确认当前绝对路径脚本里经常需要它来拼接路径。真正有信息量的是ls它的参数组合决定了你能看到什么。# 查看当前目录按修改时间倒序显示隐藏文件人类可读大小 ls -alth # 只列出目录本身不递归内容 ls -ld /var/log # 递归列出所有 .conf 文件配合 grep 过滤 ls -R /etc | grep \.conf$-a显示以点开头的隐藏文件-l长格式输出权限、属主、大小、时间-t按修改时间排序-h把字节转成 K/M/G。排查「哪个文件刚被改过」时ls -alth基本是第一步。-d针对目录本身而非其内容ls -ld常用来快速看某个目录的权限和属主。2.2 查找与定位find、locate、which 的分工find是文件查找的重武器语法是「路径 条件 动作」。新手最容易犯的错是把条件顺序写乱或者忘了加-type导致把目录也匹配进来。# 查找 /data 下 7 天内修改过、大于 100M 的普通文件 find /data -type f -mtime -7 -size 100M # 查找并删除 30 天前的 .log 文件先打印确认再删 find /var/log -type f -name *.log -mtime 30 -print find /var/log -type f -name *.log -mtime 30 -delete # 对查找到的文件批量执行命令 find /tmp -type f -name *.tmp -exec rm -f {} \;-type f限定普通文件-mtime -7表示 7 天内修改过30则是 30 天前-size 100M是大于 100M。-exec ... {} \;对每个结果执行命令{}是占位符。这里有个血泪经验-delete之前一定先用-print跑一遍确认匹配范围否则一条命令删错目录的事故并不少见。locate依赖预建索引速度极快但结果可能过期适合「我知道大概有这么个文件」的场景which用来定位可执行文件在 PATH 中的位置排查「命令到底用的是哪个版本」时必用。2.3 复制、移动与删除cp、mv、rm 的安全姿势cp -a保留权限、属主、时间戳做备份时优先用它而不是cp -r。mv在同一文件系统内是重命名跨文件系统才是真正的移动。rm -rf是事故高发区几个习惯能救命路径末尾不加多余斜杠、变量拼接前先echo确认、重要操作前用alias rmrm -i临时加确认。# 安全备份保留属性显示进度 cp -av /etc/nginx /backup/nginx-$(date %F) # 移动前先确认变量展开结果 SRC/data/app echo will move: $SRC mv $SRC /data/app.bak$(date %F)生成日期后缀避免覆盖历史备份。变量加双引号能防止路径含空格时被拆成多个参数这是脚本里最常见的翻车点之一。3. 文本处理三剑客grep、sed、awk 的实战组合日志分析、配置提取、批量替换几乎都绕不开 grep、sed、awk。它们单独用不难难的是组合起来解决一个具体问题。这一章按「先过滤、再替换、后统计」的顺序讲。3.1 grep从日志里捞出你要的那几行grep的核心是模式匹配加上下文控制。排查报错时-C显示前后几行往往比只看匹配行更有用。# 在日志中找 ERROR显示前后各 3 行忽略大小写 grep -i -C 3 error /var/log/app.log # 反向匹配排除包含 DEBUG 的行 grep -v DEBUG app.log # 递归搜索目录只列出文件名 grep -rl timeout /etc/nginx/ # 用扩展正则匹配多个关键词 grep -E error|fail|timeout app.log-i忽略大小写-C 3是上下文行数-A后几行、-B前几行-v取反-r递归-l只输出文件名-E启用扩展正则。日志量大时grep配合--colorauto能让匹配高亮肉眼定位快很多。3.2 sed批量替换与行级编辑sed默认不修改原文件加-i才写回。这个设计是保护机制但也让不少人第一次用-i时误以为没生效。# 把配置里的旧地址替换成新地址先预览 sed s/old-host/new-host/g app.conf # 确认无误后原地替换并备份原文件 sed -i.bak s/old-host/new-host/g app.conf # 删除空行和注释行 sed -i /^\s*$/d; /^\s*#/d config.txt # 只打印第 10 到 20 行 sed -n 10,20p bigfile.txts/旧/新/g中g表示一行内全部替换不加只替换每行第一处。-i.bak在修改前生成.bak备份是生产环境改配置的后悔药。-n 10,20p只输出指定行范围读大文件时比cat高效。3.3 awk按列提取与统计awk适合处理结构化文本默认以空白分隔$1、$2是列号$0是整行。做访问日志统计时它是主力。# 统计访问日志中每个 IP 的出现次数倒序取前 10 awk {print $1} access.log | sort | uniq -c | sort -rn | head -10 # 按逗号分隔输出第 2 列和第 4 列 awk -F, {print $2, $4} data.csv # 对第 3 列求和 awk {sum $3} END {print sum} numbers.txt-F,指定分隔符END块在所有行处理完后执行用来输出汇总。sort | uniq -c | sort -rn是统计频次的固定套路uniq -c前必须先sort否则相同内容不相邻计数会错。这个顺序坑过很多人。4. 进程、端口与系统状态排障时最先敲的几条命令线上出问题第一反应通常是「进程还在不在、端口通不通、资源够不够」。这一章把进程管理、端口查看、资源监控的命令串成一条排障链路。4.1 进程查看与终止ps、top、kill 的正确用法ps aux和ps -ef是两种常见风格前者 BSD 风格后者 System V 风格输出字段略有差异。配合grep过滤时记得排除 grep 自身。# 查看指定进程排除 grep 自身 ps -ef | grep nginx | grep -v grep # 实时监控按 CPU 排序只显示前 15 行 top -o %CPU | head -15 # 按名称终止进程先温和再强制 pkill -TERM -f python app.py sleep 3 pkill -KILL -f python app.py-f匹配完整命令行比只匹配进程名更精确。终止进程优先发TERM15给程序清理资源的机会无响应再发KILL9。直接kill -9是很多人的习惯但可能导致数据没落盘能不用就不用。4.2 端口与连接ss、netstat、lsof 怎么选netstat逐渐被ss取代ss更快且信息更全。查「端口被谁占用」时lsof -i也很直接。# 查看所有监听端口及对应进程 ss -tlnp # 查看 8080 端口被哪个进程占用 ss -tlnp | grep :8080 lsof -i :8080 # 统计各状态连接数 ss -ant | awk {print $1} | sort | uniq -c-tTCP-l监听状态-n不做域名解析更快-p显示进程。ss -ant | awk ...统计 TIME_WAIT、ESTABLISHED 数量判断连接是否异常堆积时很有用。4.3 磁盘与内存df、du、free 的排查顺序磁盘满是最常见的故障之一。排查顺序一般是df -h看哪个分区满再du -sh逐层定位大目录。# 查看各分区使用率 df -h # 查看当前目录下各子目录大小倒序 du -sh */ | sort -rh | head -10 # 查看内存和 swap 使用 free -h # 找出被删除但仍被进程占用的文件磁盘没释放的常见原因 lsof | grep deleteddf显示的是文件系统层面du是目录层面两者对不上时往往是有进程持有已删除文件的句柄lsof | grep deleted能揪出来重启对应进程即可释放。这个现象新手常误以为「磁盘统计坏了」。5. 权限、用户与软件包绕不开的日常操作权限和用户管理是 Linux 安全模型的核心也是「操作无法完成」「Permission denied」这类报错的根源。软件包管理则决定了你装环境顺不顺手。5.1 权限模型chmod、chown 与数字含义Linux 权限分属主、属组、其他三类每类有读4、写2、执行1三个位。chmod 755就是属主 rwx、属组 r-x、其他 r-x。# 给脚本加执行权限 chmod x deploy.sh # 递归设置目录权限为 755文件为 644 find /var/www -type d -exec chmod 755 {} \; find /var/www -type f -exec chmod 644 {} \; # 修改属主和属组 chown -R www-data:www-data /var/www目录和文件的权限策略不同目录需要执行位才能进入文件一般不需要执行位。用find分开设置是标准做法比无脑chmod -R 777安全得多。777虽然能快速解决权限问题但等于对所有用户开放写权限生产环境要避免。5.2 用户与提权useradd、sudo、su 的边界useradd创建用户usermod修改passwd设密码。日常提权用sudo而不是直接su因为sudo有审计日志能追溯谁执行了什么。# 创建用户并指定家目录和 shell useradd -m -s /bin/bash deploy # 加入 docker 组 usermod -aG docker deploy # 以 deploy 身份执行命令 sudo -u deploy whoami-m自动建家目录-s指定登录 shell-aG追加组不加-a会覆盖原有组这是常见误操作。sudo -u以指定用户身份运行排查「换个用户能不能复现」时很方便。5.3 软件包管理apt、yum、dnf 的对应关系不同发行版包管理器不同但命令结构相似。Debian/Ubuntu 用aptCentOS/RHEL 老版本用yum新版本用dnf。操作Debian/UbuntuCentOS/RHEL更新索引apt updateyum makecache/dnf makecache安装apt install nginxyum install nginx卸载apt remove nginxyum remove nginx搜索apt search nginxyum search nginx查看信息apt show nginxyum info nginx装完包后服务一般用systemctl start/status/enable管理。enable是设置开机自启很多人只start忘了enable重启后服务没起来排查半天。6. 避坑与排查那些让新手反复翻车的命令细节命令本身不难难的是边界情况。这一章记录几条高频踩坑每条按「现象 → 原因 → 解决」写都是实际排障中反复遇到的。6.1 rm -rf 删错目录现象执行rm -rf $DIR/*后发现删的不是预期目录甚至根目录下文件被清空。原因变量$DIR为空时命令变成rm -rf /*直接清根。解决脚本开头加set -u变量未定义就报错退出删除前先echo确认路径关键目录用rm -ri交互确认。养成「变量必加引号、删除先打印」的习惯能挡掉绝大多数误删。6.2 grep 过滤时把自己也匹配进去现象ps -ef | grep nginx结果里总多出一行grep nginx。原因grep 进程本身也包含关键词。解决加grep -v grep或者用pgrep -f nginx直接按进程名匹配更干净。pgrep和pkill是配套的排查和终止进程时优先用它们。6.3 磁盘满了但 du 找不到大文件现象df -h显示分区 100%但du -sh逐层统计加起来远小于分区容量。原因有进程持有已删除文件的句柄空间没释放。解决lsof | grep deleted找到对应进程重启该进程或kill掉空间立即回收。这个坑在日志切割后忘记通知进程重开文件时特别常见。6.4 chmod -R 777 埋下安全隐患现象为了快速解决权限报错直接chmod -R 777问题暂时消失但后续出现文件被篡改、服务异常。原因777 让所有用户可读写执行破坏了最小权限原则。解决按目录 755、文件 644 分别设置属主属组用chown归位。权限问题要定位到具体是哪个用户、哪个操作被拒而不是一刀切放开。6.5 管道中 uniq -c 计数不准现象cat file | uniq -c统计结果里相同内容出现多次计数分散。原因uniq只合并相邻的重复行输入未排序时相同内容不相邻。解决先sort再uniq -c即sort file | uniq -c。要按频次排序再加sort -rn。这个顺序错误在日志统计里非常普遍。7. 把命令练成肌肉记忆我的日常训练与验证方法命令这东西看十遍不如敲一遍。我自己的习惯是维护一个~/notes/cmd.md每遇到一条新命令或一个新参数组合就记下「场景 命令 一句说明」定期回顾。时间长了这份笔记就是个人版的 Linux 常用命令大全比任何通用手册都贴合自己的实际工作。验证一条命令是否真的理解我常用两个办法。一是用man和--help交叉确认参数含义尤其是那些容易混淆的比如find的-mtime和-mmin、grep的-A和-C。二是构造最小复现环境在/tmp下建几个测试文件把命令跑一遍看输出确认无误再上生产。这个习惯帮我挡掉过好几次「参数记反了」的事故。对于想系统提升的人建议按场景而不是按字母顺序练。比如专门花一周练「日志排查」grep捞错误、awk统计、sed提取、sort | uniq -c汇总把一条完整链路走通。再花一周练「进程与端口」ps、ss、lsof、top组合使用。场景化训练比背命令列表有效得多因为真实问题从来不是单条命令能解决的。最后分享一个我坚持多年的小技巧把高频命令做成别名写进~/.bashrc。比如alias llls -alth、alias portsss -tlnp、alias bigdu -sh */ | sort -rh | head -10。别名不是偷懒而是把「想查什么」和「敲什么」之间的距离缩短让排查动作更快。改完source ~/.bashrc生效新开终端也会自动加载。命令的熟练度没有捷径但有方法场景驱动、最小复现、笔记沉淀、别名加速。这四条坚持下来半年后回头看你会发现自己面对一台陌生服务器时已经能从容地敲出该敲的那几条命令。希望帮到你。本文还有配套的精品资源点击获取
返回列表