
简介一份面向Linux新手的常用命令速查手册适合刚接触Ubuntu、Debian等发行版并希望快速上手终端操作的学习者。内容围绕通用命令、Ubuntu专用命令、系统命令三大模块展开不仅覆盖date、pwd、chmod、ps、kill等基础操作还详解dpkg与apt的常用参数、软件包管理思路以及通过uname、cat /proc/cpuinfo等查看系统信息的技巧同时补充了ADSL拨号、网络配置、服务启停等实用内容便于按需查阅。资源为单个PDF文件整体仅20KB内容精炼友好虽然体积小但覆盖面广涵盖从日常操作到系统维护的常见场景。目前已有289人学习对于想建立Linux命令知识框架的初学者是一份不错的入门资料。读者可借助其中的分类清单和命令示例快速定位所需操作减少记忆负担并提升日常操作与排错效率同时也能帮助理解命令背后的逻辑。 看到“linux菜鸟进阶系列之Linux常用命令(新手必看)分享.pdf”这个文件名我第一反应是群里又有朋友在整理入门资料了。Linux常用命令这事儿说简单是真简单无非就是几十条命令来回用说难也真难因为很多人压根不知道每条命令在真实场景里该怎么组合、什么时候能把问题一刀解决。我自己带新人的时候最常被问的就是“这条命令到底什么时候用”“这几个参数啥区别”。所以我一直觉得命令大全到处都有缺的是把命令放到场景里讲清楚的文章。这篇内容就是干这个的。我会把Linux里最常用的命令按使用场景拆开讲从文件操作、文本处理到系统状态排查、用户权限和网络故障定位每一类都会告诉你这条命令为什么这么写、参数背后的逻辑是什么、我在实际工作中踩过哪些坑。适合刚装好虚拟机或者云服务器、准备入行运维或后端开发的朋友也适合面试前想系统过一遍Linux命令的人。跟着敲一遍比背十遍列表有用得多。1. 先搞懂 Shell 的背后逻辑命令才能真正记住很多新手拿到命令列表就开始背背完第二天全忘光。问题不在记忆力而是没弄明白“命令究竟是什么”。Linux里你输入的每一条命令本质上都是在向Shell默认是bash还有zsh等衍生品发出一个请求让它在操作系统上执行对应的程序。理解了这个模型你才能真正把命令用活。1.1 命令的通用结构命令名 选项 参数任意一条命令拆开来看都是三段式结构。拿一条很常见的命令举例ls -lh /var/log这里ls是命令名-l和-h是选项/var/log是参数。命令名决定了“我要干什么”选项决定了“具体怎么干”参数则告诉命令“对谁干”。选项通常有两种写法短选项-l、-h这种单字母形式以及长选项--all、--human-readable这种完整单词形式。短选项方便连写长选项可读性更好。新手最容易忽略的是文档查询能力。无论什么命令在终端里敲man 命令名就能看到完整手册按q退出。比如man ls里面会详细解释每个选项的含义。我见过不少同事用了好几年ls都不知道ls -t可以按修改时间排序、ls -S可以按文件大小排序这些在查问题现场时特别有用。除了man命令名 --help也是快速查看用法的好方法输出比man简洁适合记不住参数时应急。1.2 命令为什么能执行PATH 的作用和 alias 的坑你有没有想过为什么敲ls系统能执行而敲一个自定义的mycmd却报“command not found”这里的关键是环境变量PATH。系统会在PATH列出的目录里一个个去搜索你输入的命令找到就执行找不到就报错。你可以用echo $PATH看一下当前系统的搜索路径再用which ls查一下ls到底住在哪个目录。这个原理在实际排错中有用。比如有时候你在某个目录下写了一个可执行脚本test.sh直接敲test.sh会提示找不到敲./test.sh就能执行——因为当前目录.通常不在PATH里必须用./明确指定。还有一个容易踩的坑是alias别名。很多Linux发行版会把ll默认定义为ls -alF你输入ll能列出详细内容其实执行的是背后那条被替换的命令。某些环境下grep会被alias成带颜色输出的grep --colorauto这在脚本里偶尔会导致输出格式异常。用type 命令名可以查看它是不是alias排查脚本问题时非常有用。1.3 几个必须形成肌肉记忆的快捷键命令记住了但效率提不上来多半是快捷键没掌握。Tab键补全是我教每个新人第一个必须养成的习惯敲两个字母按Tab路径和命令都能自动补全既快又不会拼错。CtrlC是中断当前运行的前台程序CtrlZ是把程序暂停放到后台可以用fg再调回来CtrlD是退出当前终端会话。用history可以查看历史命令记录想重新执行某条历史命令用!数字按序号直接调出来。提示history查询到之后!bb这种按内容匹配前缀的写法也能用但风险较大。如果目标历史命令包含特殊字符建议先history | grep 关键词确认编号再用!编号执行避免误操作。2. 文件与目录操作最基础也最容易翻车文件操作是Linux里出现频率最高的一类命令也是最容易出现“误删、误移、找不到路径”事故的一类。我在做运维的这些年里见到过太多因为对cp、rm理解不到位而导致的线上事故所以这一节我会多讲一些参数陷阱和防御性习惯。2.1 日常必用的五个命令ls、cd、pwd、mkdir、touchls是列表命令的王者但我建议你不要只记ls一个裸命令。配合参数使用才有意义ls -l显示详细属性ls -a显示隐藏文件ls -lh把文件大小换算成人类易读的K、M、G。在排查数据目录时ls -lhrt是我用得很频繁的组合——按时间倒序排列最新变更的文件直接显示在最后面。cd没什么好说的但cd -可以快速回到上一次所在目录这个技巧在长路径之间反复切换时效率提升明显。pwd用来确认当前绝对路径脚本里也经常用到。mkdir创建目录时一定要记住-p参数mkdir -p /data/logs/nginx可以一次性创建多级目录不带-p遇到父目录不存在就会报错。touch有两个常用用途一是创建空文件二是把已存在文件的时间戳更新为当前时间。第二个用途在配合构建工具或日志切割时很实用。2.2 复制、移动、删除cp、mv、rm 的防守之道cp和mv的参数陷阱主要集中在递归拷贝上。复制目录必须加-r比如cp -r /data/app /data/app_backup漏了-r会直接报错。mv同一分区内是改文件名速度极快跨分区则是“先复制再删除”文件大时会感觉卡顿。大家习惯用mv做备份比如mv nginx.conf nginx.conf.bak这个思路没问题但记得备份文件不要放在原工作目录否则一旦忘了清理备份文件也可能被误扫描到配置里。rm是重灾区。rm -rf这条命令天天有人用也天天有人因它吃亏。-r是递归删除目录及内容-f是强制不提示两个参数叠加就是“不问任何问题直接删干净”。我见过有人在服务器上误执行rm -rf /var/log/*把整个日志目录清空后才想起里面还有需要保留的审计记录。我的建议是两条一是删除前先用ls确认目标二是给rm加上保险比如在~/.bashrc里添加alias rmrm -i虽然每次删除都会询问但多这一步确认能挡住大部分低级错误。另外提醒一句不要在重要服务器上随手执行rm -rf /带通配符的组合哪怕你确定自己路径写对了。2.3 查找文件find 与 locate文件存多了总会有“我明明放在这怎么找不到了”的时候。find是最强大的查找工具因为它不只是按名字找还能按类型、大小、时间等条件组合搜索。比如find /var/log -name *.log -mtime -7 find /tmp -type f -size 100M find /data -type d -name backup*第一条查找/var/log下7天内修改过的日志文件第二天看大文件第三天找特定模式的目录。这里-mtime -7中的-7表示“小于7天”如果是7就是“超过7天没变过”。find还有一个常见的后续操作是和-exec组合比如批量修改文件权限find /data/www -type f -exec chmod 644 {} \;其中{}是find找到的结果占位符\;表示命令结束。用的时候记得在测试目录先跑一遍不带-exec的版本确认结果对再动真格。locate命令走的是数据库索引匹配速度远快于find但它依赖系统定期更新索引库新建的文件可能查不到。需要紧急定位时我可不敢只用locate还是find全盘扫更保险。3. 文本处理三板斧grep、sed、awk 是排查日志的命根子进入运维和后端这行你会发现自己一半以上的时间在跟文本打交道——日志文件、配置文件、命令输出。Linux下的文本处理绕不开grep、sed、awk这三位老哥。它们看起来难但只要能掌握高频用法就已经能解决绝大多数问题了。3.1 grep从日志海里面捞线索grep最简单的用法是全文搜索某个关键词比如grep error /var/log/nginx/error.log。但真正干活时参数远比裸grep有用grep -v反选排除包含某关键词的行。比如grep -v ^# nginx.conf可以过滤掉注释行。grep -i忽略大小写。日志里Error、ERROR、error混着出现时尤其好用。grep -n显示行号配合编辑器排查配置错误时直接告诉你第几行有问题。grep -r递归搜索目录下所有文件比如grep -r listen 443 /etc/nginx/。grep -E扩展正则能一次匹配多个关键词比如grep -E error|warning app.log。我在排查线上故障时最常用的组合是grep -n 关键字 日志文件 | tail -100先把命中行号拿到再结合sed调取上下文。另外grep的返回状态码也有用——匹配到返回0没匹配到返回1。在shell脚本里可以用if grep -q 关键字 文件; then ...做判断-q静默模式不会输出内容适合只关心结果真假的场景。3.2 sed替换、删除、按行打印sed被称为流编辑器最常见的场景是做文本替换。基本格式是sed s/旧文本/新文本/g 文件。注意这个命令默认只把替换结果输出到屏幕并不会改原始文件。想真正落盘要用-i参数比如sed -i s/8080/9090/g config.yaml。这既是方便也是危险之处-i会直接修改文件生产环境操作前强烈建议先备份或者先跑一遍不带-i的命令确认输出无误再加-i执行。sed另一个高频用法是按行号打印内容比如sed -n 20,30p error.log打印第20到30行。配合前面grep -n找到的行号你可以在几秒钟内定位到出问题的上下文。还有按行删除sed -i /^#/d config.conf会删除所有以#开头的注释行这在清洗配置时很快但注意看清楚再执行删错可没有后悔药。3.3 awk按列处理的“瑞士军刀”awk对新手来说可能是三板斧里最抽象的但它的核心逻辑其实很简单把每行按分隔符切成多个字段然后针对字段做处理。默认分隔符是空格$1表示第一列$2表示第二列$NF表示最后一列。举个排查日志的高频场景Nginx的access_log里第一列是访客IP我想统计哪些IP访问次数最多。一条管道命令就能完成awk {print $1} access.log | sort | uniq -c | sort -rn | head -20这里awk {print $1}提取第一列IPsort排序uniq -c统计每个IP出现次数sort -rn按次数降序排列最后head -20取前20名。这条命令组合了我在这篇文章里讲的多个命令的核心逻辑是典型的“Linux哲学”——小命令通过管道连接成强大的工具链。awk还可以指定分隔符。比如要处理/etc/passwd这种用冒号分隔的文件用awk -F: {print $1} /etc/passwd就能提取用户名。操作远程服务时awk -F: {print $NF}直接取密码字段也很常见。遇到需要按条件过滤行并打印指定列的情况awk $3 100 {print $1, $2}这种写法就能上场复杂度上去以后它简直可以当一门小型语言用。3.4 tail、head、less 与管道的搭配日志排查的日常其实是在tail和less之间来回切换的。tail -f 日志文件可以实时跟踪输出调试时新日志一出现马上能看到tail -n 100则取出末尾100行。head -n 20则相反看文件开头。less适合浏览大文件支持方向键翻页、/关键字搜索、g跳到行首、G跳到行尾注意用q退出。这四个命令单独用价值有限但通过管道|组合起来就不一样了。tail -n 1000 app.log | grep Exception先取末尾1000行再筛选异常。cat 文件 | grep xxx这写法虽然常见但grep本身就能直接读文件不需要先cat少一道工序更高效。管道的核心思想是“上一个命令的标准输出作为下一个命令的标准输入”理解了这一点你就能组合出无数种排查方案。4. 系统状态与进程管理运维手上必须有的几把尺子线上出问题时第一件事不是看代码而是看系统资源状态。是CPU爆了内存不够磁盘写满还是进程僵死了刚接触Linux的新手很难有目测判断但要善用命令来做量化分析。4.1 看系统负载top 和 uptimeuptime最简单输入后你会看到类似这样一行load average: 0.20, 0.15, 0.10这三个数分别代表过去1分钟、5分钟、15分钟的系统平均负载。怎么判断正不正常关键看它和CPU核数的对比。如果负载长期大于CPU核数说明系统已经过载有任务在排队如果接近或低于核数说明系统压力尚可。比如4核机器负载0.2很闲32核机器负载0.2对机器来说可以忽略不计。这里不要只看瞬时值要结合5分钟、15分钟的趋势判断是突发还是持续。top是动态监控工具打开后默认按CPU占用率排序。界面里%Cpu(s)一行的us是用户态占用、sy是系统态占用、wa是I/O等待。wa高通常意味着磁盘有瓶颈比如大量日志写入或数据库查询扫描大表。top运行中按P按CPU排序、按M按内存排序按z高亮显示色彩按1展开每个CPU核的使用情况。查线程时用top -H -p 进程ID能看到该进程内部的线程列表这在分析Java应用CPU飙高时是必备操作。4.2 内存与磁盘free、df、du 的坑free -h输出内存使用情况但新手很容易被used这一列吓到。Linux的内存管理机制会尽量把空闲内存用作page cache文件缓存这部分内存在需要时可以释放给应用程序所以真正需要关注的指标是available表示“在不触发swap的情况下还能分给新应用多少内存”。我在判断服务器内存是否够用时都是直接看available还剩多少而不是纠结used有多高。磁盘方面df -h查看各分区的挂载点和已用空间df -hT额外显示文件系统类型。执行后如果发现某个分区使用率超过80%就该着手清理了。du则负责统计目录大小du -sh /var/log查看某个目录总大小du -sh *列出当前目录下每个子目录的大小。这是找到“谁把磁盘塞满了”的利器。这里有个实战中容易困惑的点明明用du统计某个目录只有几个G但df显示整个分区用了80%差得离谱。这种情况大概率是有文件被删除但仍有进程持有它的句柄。用lsof | grep deleted找出那个进程重启或让进程释放句柄后磁盘空间才会真正空出来。我第一次遇到时以为是文件系统bug查了半天才发现是日志文件被删除后进程还在持续写入。4.3 进程管理ps 与 kill 的正确姿势查运行中的进程最常用的是ps aux。输出结果里USER是运行该进程的用户%CPU和%MEM是资源占用百分比STAT是进程状态S表示睡眠R表示运行Z表示僵尸。配合过滤使用更高效ps aux | grep nginx但注意grep匹配到的行里会有它自己如果你不想看到这条干扰行用grep nginx | grep -v grep排除或者干脆用pgrep nginx直接返回进程PID。结束进程用kill。默认kill PID发送的是SIGTERM信号相当于礼貌地请进程“收拾一下准备退出”kill -9 PID发送的是SIGKILL内核直接强制终止进程没有机会做清理。我见过很多新手一上来就kill -9虽然大多数时候也能达成目的但对于数据库、服务进程这类需要持久化状态的应用强制杀死可能导致数据损坏。我一个负责支付模块的同事就干过这事下午业务高峰用kill -9干掉了一个连接池中间件结果连接没释放完半个服务的请求超时。正确的做法先查清楚进程状态再用kill不给机会才用kill -9。5. 权限、用户、打包与安装从入门到能动手部署文件权限是Linux安全模型的基石也是新手从“会用”走向“能部署”的一道分水岭。这一节里我尽量让你读完就能理直气壮地管理服务器上的用户、文件和软件包。5.1 看懂权限位rwx 与数字的关系执行ls -l后每行开头类似-rw-r--r--这10个字符就是权限的精髓。第一个字符表示文件类型-是普通文件d是目录l是符号链接后面9个字符分成三组分别是文件所有者user、所属组group、其他用户other的权限。每组里的r是读、w是写、x是执行。目录的x权限比较特殊它实际代表“能否进入该目录”没有x权限即使有r也进不去。数字表示法本质是二进制r对应4w对应2x对应1。三者相加就是一组权限的数字值rwx是7421r-x是541r--是4。所以chmod 755 文件表示所有者rwx、组和其他用户r-xchmod 644表示所有者rw-、组和其他用户r--。我建议在常规服务部署时记住一个黄金法则文件用644、目录用755、可执行脚本用754。日志目录等需要写入的场景目录给775即可别一上来就777开777等于把锁拆了。chown用来改属主属组比如chown -R www:www /data/www把网站目录的所有者和组都改成www用户。-R是递归处理目录时必须加否则只改目录本身不改内部文件。改完以后用ls -l验证这是检查和解决权限问题必走的流程。5.2 用户管理useradd、passwd、usermod、su/sudo创建用户是每个管理员都会做的事。useradd在部分系统上默认不会自动创建家目录所以稳妥的写法是useradd -m 用户名其中-m保证/home/用户名目录被创建。紧接着passwd 用户名设置密码。想给用户加sudo权限在大部分Ubuntu系统上是usermod -aG sudo 用户名CentOS/RHEL系则是usermod -aG wheel 用户名。这里的-aG是“追加到组”而不是覆盖原有组漏了-a会导致用户被移出原来的附加组这个细节容易出事务必记住。su和sudo的区别我也多说一句su 用户名是完整切换到另一个用户身份环境变量、当前目录都会变化sudo 命令则是以当前用户身份临时借用root权限执行某条命令执行结束身份不变。运维规范里更推荐用sudo因为它在日志里有迹可循谁什么时候执行了什么命令都记录在案而直接su root一进去后续所有操作都分不清是谁干的。我管理服务器时基本禁用了root直接SSH登录所有管理员通过普通用户加sudo操作排错时看日志能清楚地定位到人。5.3 打包压缩与软件安装tar、apt、yumtar是Linux下最通用的打包工具。很多人分不清-czvf、-xzvf那一串字母都是什么意思记住一个拆解就懂了-ccreate创建归档包-xextract解压-z通过gzip压缩/解压-vverbose显示过程-f指定文件名后面紧跟包名所以tar -czvf backup.tar.gz /data是把/data目录打成tar.gz包tar -xzvf backup.tar.gz解压。解压到指定目录加-Ctar -xzvf backup.tar.gz -C /opt/restore。-f必须放在选项最后一位因为后面要直接跟文件名这个顺序错误是新手高频报错点。软件安装上Debian/Ubuntu系用aptCentOS/RHEL系用yum或dnf。拿到一台新服务器第一步永远是apt update或yum makecache更新软件源索引再执行apt install 软件名或yum install -y 软件名。-y参数是自动回答yes跳过交互确认。装软件时遇到网络超时先检查源配置和DNS别急着重装。这里提醒一句生产服务器的软件包能不用-y装就尽量别加手动确认一下要装什么再回车能避免很多“手滑装了不该装的东西”的尴尬。6. 网络排查与组合技一条命令一条链服务器出问题最后多半会落到网络排查上。很多新手对ping和curl的理解有偏差以为ping不通就是网络断了其实ping只测ICMP协议连通性某些云厂商的安全组默认不响应ICMP但业务端口依然正常。真正要确认服务是否可用还得看端口和HTTP响应。6.1 网络状态两件套ss 与 curlss是查看网络连接和端口监听情况的利器它取代了老派的netstat输出更快信息更全。排查“端口是否被监听”一条命令足够ss -tunlp | grep 8080选项拆解-t看TCP、-u看UDP、-n不做DNS反解直接显示数字IP和端口、-l只显示正在监听的连接、-p显示占用端口的进程名和PID。这五个字母组合起来就是“这台机器上所有监听的TCP/UDP端口以及对应的进程”。在排查“8080端口被谁占了”时这条命令是标准答案。配合ps aux | grep PID还能进一步定位到具体启动命令。curl则是测试HTTP服务的最好工具。curl -I http://127.0.0.1只看响应头能看到HTTP状态码、Server类型、Content-Type等信息。状态码200正常302要留意是否有重定向500基本可以确定是后端服务挂了。curl -v则显示更多交互细节包括DNS解析、TCP连接建立、TLS握手过程的每一段。请求一个接口如果不通从-v的输出里通常能直接看出问题出在DNS、TCP还是HTTP层。一个完整的排查顺序是先ss -tunlp确认端口在监听再curl -I确认本地HTTP响应正常最后从外部机器访问验证这样能快速圈定问题范围。6.2 常用命令组合技与效率技巧命令单学可能觉得简单但真正体现水平的地方在于组合。聊几个我在实际工作中高频使用的组合# 1. 统计日志中报错次数并输出最近5条错误详情 grep ERROR app.log | tail -5 # 2. 统计每个IP的请求次数并降序排列取前10 awk {print $1} access.log | sort | uniq -c | sort -rn | head -10 # 3. 实时监控日志中的关键字 tail -f app.log | grep Exception # 4. 查找大文件并将结果按大小排序 find /data -type f -size 500M -exec ls -lh {} \; | sort -k5 -hr这些组合的核心逻辑是一样的前一个命令的文本输出作为后一个命令的输入层层筛选最终得到你想要的答案。我把它们称作“排查的五指山”遇到复杂问题时先组合筛选出范围再根据范围进一步深入。效率方面我还建议把高频组合写成alias或shell函数。比如我把tail -f和grep组合定义成alias greptailtail -f | grep把ss -tunlp | grep定义成alias portss -tunlp | grep写在~/.bashrc里source ~/.bashrc生效后每次敲port 80就直接列出80端口监听情况省去反复敲长命令的时间。提示写alias时尽量选短且不容易冲突的名字避免跟系统已有命令重名。改完~/.bashrc后建议先开一个新终端验证alias生效再继续后续操作。在服务器上摸索Linux命令最好的学习方法不是背而是带着问题去用。今天遇到日志文件太大就去学find和du明天发现服务起不来就去查journalctl和systemctl。用得多了命令自然就长在脑子里了。我现在带新人都要求他们先把这篇文章里涉及的命令全部敲一遍不要求背参数但要求理解每条命令在什么场景下用、为什么这样写。等这些基本功夫扎实了再往深了学Shell脚本、网络抓包、性能调优会顺畅得多。最后分享一个我自己的习惯在服务器上放一个cheatsheet.txt把常忘的命令和参数写进去比如tar的打包解压参数对照、find的常用表达式、awk的列提取写法。遇到卡壳就cat cheatsheet.txt翻一下顺手记录新学到的技巧。这份笔记越攒越多慢慢就成了自己专属的“命令字典”。你整理的那份PDF其实也可以按这个思路改造成自己的版本——不追求大而全只记录工作中真正用到、验证过的命令这才是最实用的Linux命令手册。本文还有配套的精品资源点击获取