
很多刚接触 Linux 的朋友第一反应都是“这黑乎乎的窗口到底怎么玩”鼠标点不了桌面也跟 Windows 长得不一样连个软件都不知道上哪儿找。但只要你愿意花点时间把常用的 Linux 命令过一遍就会发现这东西比图形界面还顺手——批量改文件名、一键打包几百个日志、远程连服务器干活效率高到回不去。这份速查手册我整理了很久不是简单罗列命令而是把每个命令最常用的场景、最容易踩的坑、还有参数为什么要这么写都讲清楚。不管你是正准备入行的运维新手、还在读书的计算机专业学生还是工作中偶尔要碰服务器的开发、测试、数据分析同学这份手册都能直接拿来用。我尽量用大白话解释遇到专业术语也会顺手点一下保证零基础也能看懂、能照着敲。先把基础打牢后面进阶的东西才有得聊。1. 文件与目录操作你每天都在跟它们打交道1.1 先学会“我在哪、有什么”pwd、ls、cd这三个命令可以说是 Linux 里最基础的“三件套”任何时候打开终端第一件事基本就是在敲它们。pwd查看当前所在目录的完整路径。全称是 print working directory直白点就是“打印当前工作目录”。刚上手时我建议多敲几下建立“我在哪”的方位感否则后面一切操作都是空中楼阁。ls列出当前目录下的文件和子目录。全称 list最常用的是三个搭配ls -l显示详细信息包括权限、属主、文件大小、修改时间。这就是那个经典的-rw-r--r--开头的一长串列表。ls -a显示所有文件包括隐藏文件。Linux 里以.开头的文件默认不显示比如.bashrc、.gitignore想看就得加-a。ls -lh-h是把文件大小显示成人类易读的格式比如 1.5K、234M而不是一堆字节数字日常使用频率极高。cd切换目录。全称 change directory用法很简单cd /etc进入 /etc 目录cd ..返回上一级cd ~回到当前用户的家目录cd -返回上一次所在的目录。最后一个cd -很有用在两个目录间来回切换时能省不少事。我刚学 Linux 时经常犯一个错误以为ls只能看当前目录后来发现直接ls /var/log也能看指定目录ls -l /etc/nginx/nginx.conf甚至可以看单个文件详情。所以不一定要先cd进去再ls命令可以直接跟路径效率高很多。1.2 创建、复制、移动、删除touch、mkdir、cp、mv、rm这组命令是日常操作的重头戏也是新手最容易“翻车”的地方。先说好消息这些命令的逻辑都很直白基本看名字就能猜到用途。再说坏消息rm用不好真的会出事后面专门讲。touch创建空文件或者更新已有文件的时间戳。比如touch index.html会生成一个 0 字节的 index.html 文件。如果文件已存在touch不会清空内容只是把修改时间改为当前时间这个特性偶尔可以用来触发某些依赖文件时间戳的构建工具。mkdir创建目录。mkdir myproject创建单层目录mkdir -p a/b/c可以递归创建多级目录这个-p参数非常重要因为系统不会自动帮你把中间层级补出来。cp复制文件或目录。cp file1.txt file2.txt把文件复制一份并命名为 file2.txtcp -r dir1 dir2递归复制整个目录-r不加的话复制目录会报错。mv移动或重命名。mv old.txt new.txt重命名mv file.txt /tmp/把文件移动到 /tmp 目录。注意mv跨磁盘分区时实际上是“复制删除”大文件会稍微慢一点。rm删除文件或目录。rm file.txt删除文件rm -r dir递归删除目录rm -f file.txt强制删除且不询问。很多人喜欢rm -rf一把梭但我强烈建议新手不要习惯性加f不加的话删除前会提示确认能给你一个“反悔”的机会。注意Linux 下删除文件不会进“回收站”rm掉了就是真的没了。我自己的习惯是重要目录操作前先用ls确认当前路径再敲删除命令。另外有一个小技巧用rm -i代替rm每条删除前都会询问虽然麻烦但更安全。1.3 查找文件find 和 locate文件多了以后光靠ls和cd翻目录就太低效了。找文件主要有两个命令find和locate。find是真正的“全能选手”实时搜索功能强但相对慢。最常用的几个姿势find /etc -name *.conf在 /etc 目录下找所有以 .conf 结尾的文件。find /var -size 100M找 /var 下大于 100MB 的文件排查磁盘占用时神好用。find . -mtime -1找当前目录下 24 小时内修改过的文件排查问题时常用来确认“最近到底改了啥”。locate则是走“数据库索引”的路线速度飞快但依赖系统定期更新索引库。刚装完系统可能找不到刚创建的文件需要先跑一次updatedb更新数据库。如果你的系统没装 locate通过yum install mlocate或apt install mlocate安装即可。个人经验日常定位配置文件、日志文件find虽然慢但胜在准确如果只是模糊记得文件名locate更快。两个配合着用基本能覆盖 90% 的找文件需求。2. 查看与处理文件内容读写之间见真章2.1 从头到尾和从尾到头cat、less、head、tail文件内容查看这块不同场景有不同的“正确姿势”不是所有文件都适合直接cat从头看到尾。cat全称 concatenate本意是“连接文件”但最常用的用途是一次性把整个文件内容打到屏幕上。适合看短小的配置文件比如cat /etc/hostname。文件太长就别用cat了刷屏会刷到你怀疑人生。less分页查看大文件的首选。打开后按空格键或PgDn翻下一页按b或PgUp翻上一页按g跳到文件开头按G跳到末尾按/keyword搜索关键词按n跳转到下一个匹配项。退出按q。less的搜索功能特别实用看日志时找报错信息全靠它。head查看文件开头默认显示前 10 行。head -n 20 file.log可以指定行数。查看配置文件的注释说明头、CSV 文件的表头时很常用。tail查看文件末尾默认也是 10 行。重点是tail -f filename它的意思是“实时跟踪文件新增内容”日志监控神器。调试程序或者看服务启动日志时开一个终端挂着tail -f新输出的日志会自动滚动出来。我调试 Nginx 或应用日志时通常开两个终端一个跑服务一个tail -f盯日志改动配置后立刻能在日志里看到效果。这种“边改边看”的循环排查问题的效率非常高。2.2 搜索内容的三板斧grep、sed、awk如果说只允许我向新手推荐三个 Linux 命令我会毫不犹豫选 grep、sed、awk。它们看起来简单组合起来威力巨大是文本处理的“三驾马车”。grep是“搜索过滤”专家用法是grep 关键词 文件。常用参数grep -i忽略大小写。搜索 ERROR 时顺带把 error、Error 都找出来。grep -r递归搜索目录下的所有文件。grep -n显示匹配行所在的行号排查代码问题时光速定位。grep -v反向匹配输出不包含关键词的行。比如看日志时想过滤掉所有 DEBUG 行用grep -v DEBUG。配合管道符使用更香tail -f app.log | grep Exception实时日志只显示带 Exception 的行清净多了。sed是“流编辑器”擅长对文件内容做增删改查的批处理。新手最先记住这个用法就够了sed -i s/old/new/g file.txt把文件里所有 old 替换成 new。-i表示直接修改原文件s是替换操作g表示全局替换否则每行只替换第一处。注意-i会直接改文件正式操作前建议先不加-i跑一遍确认输出无误再真正执行。awk是“列处理”专家。它的默认行为是按空白字符把每行拆成多个字段$1表示第一列$2表示第二列以此类推。最经典的用法awk {print $1} file.txt只输出每行的第一列。查看登录日志时last -n 10 | awk {print $1}可以快速列出最近登录的用户名。awk 其实是一门完整的编程语言但新手不需要想那么深先从“按列切数据”开始用就够了。提示grep、sed、awk 都可以配合管道符使用。管道符|的作用是把前一个命令的输出作为后一个命令的输入这是 Linux 命令设计的精髓。比如ps aux | grep nginx就是列出所有进程、然后过滤出 nginx 相关的行这几乎成了运维人员的“口头禅”。2.3 排序去重与统计sort、uniq、wc日志分析、数据处理时经常需要对内容排序、统计次数、数行数这三个命令是标准答案。sort按字典序排序。sort file.txt默认按第一列排序sort -n按数值大小排序sort -r倒序。处理数字时必须加-n否则 100 会被排在 20 前面因为字典序里 “1” 比 “2” 小。uniq去除相邻重复行。注意“相邻”这两个字uniq只对连续的行生效。所以通常配合sort使用sort file.txt | uniq。wcword count 的缩写统计行数、单词数、字节数。wc -l只统计行数wc -l access.log马上告诉你这个日志共有多少行。统计日志里某个 IP 出现了多少次一行命令搞定awk {print $1} access.log | sort | uniq -c | sort -rn。第一步取第一列 IP第二步排序让相同 IP 相邻第三步uniq -c统计次数第四步按次数倒序排列。这个过程很好地展示了 Linux 命令组合的威力不知不觉中就完成了简单脚本才能做到的事。3. 权限、用户与进程管理安全与效率的基石3.1 别乱改权限chmod、chown 与权限的本质Linux 是多用户系统每个文件和目录都有“属主”“属组”和“其他人”三套权限每套权限又分为读r、写w、执行x三种。用ls -l查看文件时-rw-r--r--这段就是权限信息第一个字符表示文件类型-普通文件d目录后面九个字符每三个一组对应属主、属组、其他人的读、写、执行权限。chmod修改权限。两种常用写法数字法chmod 755 script.sh。数字是怎么算的r4w2x1三项相加。7421表示可读可写可执行541表示可读可执行。所以 755 就是属主有全部权限属组和其他人只有读和执行权限这是最常见的文件权限配置。符号法chmod ux script.sh给属主加执行权限chmod go-w file.txt去掉属组和其他人的写权限。符号法改动更精准不会误伤其他权限位。chown修改文件属主和属组。chown user:group file.txt把文件属主设为 user、属组设为 group。通常需要 root 权限才能执行。权限归属混乱时服务经常莫名“没权限读文件”用chown校正归属能解决一大批权限类故障。我见过不少新手改权限时喜欢直接chmod 777省事是省事但后果很严重——任何用户都能改这个文件在服务器上相当于把家门钥匙复制了一万份发出去。正确态度是能少给就少给只在确实需要时对指定用户开放写或执行权限。3.2 用户切换与提权su、sudo在日常操作中出于安全考虑普通用户权限往往干不了系统管理类的事。这时候有两种方式切换身份suswitch user 的缩写。su - root切换为 root 用户注意带-表示同时加载 root 的环境变量需要输入 root 密码。sudosuperuser do即以管理员身份执行单条命令。sudo cat /var/log/messages用当前用户的密码授权不需要知道 root 密码。从安全角度现在的服务器普遍推荐用sudo而不是直接切到 root。原因很简单sudo 有审计日志执行过的每条命令都会记录在/var/log/secure里出了问题能追溯。而且 sudo 可以限定某个用户只能执行特定命令比一刀切的 root 权限精细得多。注意sudo和su的用法不要混淆。sudo 是“后面跟单条命令”su 是“切换整个用户会话”。新手最容易犯的错误是在 sudo 后面不加命令或者在 su 后面直接输入命令然后一脸懵地看着报错。3.3 进程查看与干涉ps、top、kill服务器上跑着什么程序、吃多少内存、占多少 CPU这些问题要靠进程管理命令回答。ps查看某一时刻的进程快照。最常用的是ps aux或ps -ef列出所有用户的所有进程。输出的关键列有 PID进程号、USER属主、%CPU、%MEM、STAT状态、COMMAND命令。想看某个进程是否在运行ps aux | grep nginx是最经典用法。top动态刷新地展示系统整体资源占用相当于 Windows 的任务管理器。默认按 CPU 使用率排序前三行是系统负载、进程数、CPU 和内存的整体情况下面是各进程的实时排名。进入 top 后按P按 CPU 排序按M按内存排序按q退出。排查性能问题时先 top 看一眼心里就有底了。kill结束进程。kill PID发送 TERM 信号请求进程正常退出kill -9 PID强制杀死进程。两者区别在于前者给进程“体面”的处理时间后者直接拉闸可能造成数据丢失或文件损坏。所以正确顺序是先kill PID等几秒不行再kill -9 PID。我处理服务假死问题时的标准流程是先用top找到占资源最高的进程 PID再用ps aux | grep PID确认它到底是谁最后根据上下文决定是kill还是重启服务。这套流程看起来简单但在生产环境下能沉着走完就已经赢过很多人了。4. 网络、压缩与软件安装搞定日常 80% 的服务器操作4.1 网络诊断与远程连接ping、curl、ssh服务器出问题一半以上跟网络有关。网络命令这块掌握好下面四个基本就够用了。ping测试目标主机是否可达。ping -c 4 baidu.com发送 4 个 ICMP 数据包检查连通性。注意看丢包率和延迟丢包率高说明链路不稳定。ping 不通的时候先确认 IP 有没有写错再查防火墙、路由。curl发起 HTTP/HTTPS 请求并显示响应内容。这是排查 Web 服务、调用 API 接口时的神器。curl http://localhost:8080/health检查本地服务是否返回正常curl -I http://example.com只看响应头curl -v https://www.baidu.com显示完整的请求响应过程。调试 RESTful 接口、验证 Nginx 配置是否生效全靠它。wget从网络下载文件。wget http://example.com/file.tar.gz简单粗暴支持断点续传-c参数下载大文件更稳。ssh远程登录另一台 Linux 服务器。ssh username192.168.1.100输入密码后即可登录。更推荐使用密钥登录把本地公钥放到服务器~/.ssh/authorized_keys里之后就能免密登录方便又安全。ssh 还有端口转发、跳板机等进阶玩法等基础熟练后再深入。4.2 压缩打包一条龙tar、zip在 Linux 下最常见的压缩包格式是 .tar.gz它是先用 tar 打包、再用 gzip 压缩的产物。很多人第一次看到tar -zxvf xxx.tar.gz这串命令时一脸懵其实每个字母都有含义-z通过 gzip 处理处理 .gz 文件-x解压extract-v显示详细过程verbose-f指定文件名file注意-f必须放在最后因为后面紧跟文件名所以tar -zxvf file.tar.gz就是“解压一个 gzip 压缩的 tar 包并显示过程”。反过来打包压缩用的命令是tar -zcvf file.tar.gz /path/to/dir其中-c表示创建归档。其他常见变形tar -xvf file.tar解压未压缩的 tar 包tar -xzvf file.tar.gz -C /tmp/解压到指定目录tar -tzvf file.tar.gz不解压只查看压缩包内容zip和unzip命令用于处理 Windows 也很常见的 .zip 格式。zip -r archive.zip dir/把目录递归打成 zip 包unzip archive.zip解压到当前目录。如果解压时中文文件名乱码试试unzip -O GBK archive.zip强制指定编码这在处理 Windows 传过来的压缩包时几乎是必用技能。4.3 软件安装与系统服务yum、apt、systemctlLinux 的软件安装方式跟 Windows 双击 exe 很不一样而是通过包管理器从软件源安装。常见的包管理器有两大家族CentOS、Rocky Linux 等用yum新版本是dnfUbuntu、Debian 用apt。两者逻辑一样只是命令不太一样。CentOS / RHEL 系常用yum install 软件名安装yum remove 软件名卸载yum update更新所有软件包yum search 关键词搜索软件包Ubuntu / Debian 系常用apt install 软件名安装apt remove 软件名卸载apt update apt upgrade先更新软件源索引再升级软件安装完软件后通常还要启动对应的系统服务。现代 Linux 统一使用 systemd 来管理服务systemctl命令负责和它打交道systemctl start nginx启动服务systemctl stop nginx停止服务systemctl restart nginx重启服务systemctl status nginx查看服务状态systemctl enable nginx设置开机自启安装完 Nginx 后执行systemctl start nginx却报错我通常先systemctl status nginx看具体提示再查看/var/log/nginx/error.log定位根本原因。只要状态里出现active (running)就说明服务正常跑起来了。5. 硬核进阶磁盘、内存、日志与常用开发工具命令5.1 磁盘与内存排查df、du、free服务器磁盘满了、内存不够了这是运维中最常见也最紧急的故障之一。排查手段核心就是这三个命令。df -h查看各磁盘分区的总容量、已用、可用、使用率。-h显示成易读单位。使用率达到 80% 以上就要注意了超过 90% 基本需要马上清理。du -sh *统计当前目录下每个子目录和文件的大小。排查“空间去哪了”时先在根目录跑du -sh *找到最大的目录再一层层进去定位。du -sh /var/log查看指定目录总大小。free -h查看内存使用情况。重点看 available 这一列它才是真正还可用的内存量。Linux 的特点是有多少空闲内存都会用来做文件缓存buff/cache所以用 top 或 free 看到 used 比较高时不需要慌张只要 available 还有剩余就行。我遇到过一次磁盘告警df -h显示使用率 100%但du -sh /统计出来的大小远小于磁盘总量。原因是某个服务删除了日志文件但进程还占着文件句柄空间没真正释放。用lsof | grep deleted找到那个进程后重启服务空间立刻回来了。这个坑比较隐蔽但也说明了系统排查不能只看表面现象。5.2 高频开发工具命令速查git、docker、nginx现在做开发基本绕不开 git 和 docker哪怕你不是专业运维日常工作也会频繁用到。这里列几个高频命令当速查表用。Git 常用git clone 仓库地址拉取远程代码到本地git status查看当前工作区状态git add .把所有变更加入暂存区git commit -m 描述提交代码git push origin master推送到远程仓库git pull origin master拉取远程最新代码git log --oneline查看简洁提交记录git checkout -- filename撤销某文件未暂存的修改Docker 常用docker ps查看运行的容器docker images查看本地镜像docker pull nginx拉取镜像docker run -d -p 8080:80 nginx后台运行容器并把宿主机的 8080 端口映射到容器的 80 端口docker logs 容器ID查看容器日志docker stop 容器ID停止容器Nginx 常用一旦部署 Web 服务基本绕不开nginx -t测试配置文件语法是否正确这个命令必用改完配置先测一下再加载nginx -s reload平滑重载配置不停机生效systemctl status nginx查看 Nginx 运行状态tail -f /var/log/nginx/access.log实时查看访问日志tail -f /var/log/nginx/error.log查看错误日志排查 502、404 全靠它有个小经验改完 Nginx 配置后一定先执行nginx -t再nginx -s reload。如果配置文件有语法错误reload 会直接失败有时还会导致服务中断而nginx -t能在生效前发现绝大部分低级别错误。5.3 日志查看与处理从入门到放弃之间只差一个好方法日志是 Linux 排障的核心信息来源但日志文件往往巨大无比直接在几百 MB 的文件里找关键词等于大海捞针。我的标准流程如下第一步先看日志文件多大、在哪ls -lh /var/log/*.log。第二步按时间范围缩小范围。很多日志按天滚动ls /var/log/nginx/就能看到 access.log-20250101、error.log-20250102 这样的历史文件。或者直接用grep 2025-01-06 14: /var/log/nginx/error.log只看某小时内产生的日志。第三步对关键词做多层过滤。先 grep 出包含 ERROR 的行再在结果里继续 grep 某个模块的名字。管道符串起来就是一串grep ERROR /var/log/app.log | grep user-service | tail -n 50。查看被 gzip 压缩过的历史日志时直接用 zgrep 代替 grepzgrep ERROR /var/log/nginx/error.log.1.gz连解压都不需要特别节省时间。这些小技巧看着不起眼真到定位线上问题的时候每一步都能快一分钟。6. 我踩过的一些坑和给你的一些建议6.1 新手最容易出的五个问题说一下我这些年见过、也亲身踩过的新手高频问题提前避开能省不少事。第一个是rm -rf误删。最典型的场景是rm -rf /home/user/手滑写成了rm -rf /home/user /结果整个根目录被删得没法启动。我的建议非常朴素永远不要在 root 用户下带着-f参数敲 rm关键目录先ls确认写路径时尽量用相对路径少用绝对路径绝对路径写错一步就是灾难。第二个是权限拒绝。新创建的文件别的用户读不了或者脚本明明有 x 权限还是提示 Permission denied多半是权限位数配错了。检查顺序是ls -l看权限位是谁的、对应哪个用户再id看当前用户属于哪些组最后用chmod或chown修正。第三个是命令找不到。command not found有时候是软件真的没装有时候是软件装了但不在 PATH 里比如 Nginx 装了但执行nginx报错可以试试/usr/sbin/nginx或者which nginx查路径。第四个是 Windows 文件传到 Linux 后出现\r结尾导致脚本执行报错。用sed -i s/\r$// script.sh把回车符删掉即可这个问题在开发机是 Windows、生产机是 Linux 的环境下非常常见。第五个是压缩包解压乱码。前面提过unzip -O GBK可以解决大部分 Windows 传过来的 zip 乱码问题tar 包一般没有编码问题但偶尔也会遇到文件名乱码用ls -b查看原始字节码再配合工具处理。6.2 学 Linux 命令的正确姿势最后分享一点我个人的学习体会。命令背了忘、忘了背这很正常不需要焦虑。关键在于不要死记硬背而是理解每个命令背后的设计逻辑Linux 命令都是“一个小工具做好一件事”通过管道符把它们组合起来解决复杂问题。你会慢慢发现命令之间是有“造句”规律的比如ps aux | grep xxx、history | grep xxx、cat /var/log/xxx.log | grep ERROR | head -n 20全都是同一套“筛选 管道 处理”的思维模式。实操时注意两点一是尽量不要在 root 下做实验自己建一个普通用户命令权限不够时再用 sudo这样能养成安全意识也不会把系统搞坏。二是用好man和--help。man ls能查看完整的官方手册ls --help能快速列出常用参数遇到不认识的命令先查这两个比上网搜更方便。这份手册里的命令基本覆盖了日常服务器操作 80% 以上的场景。你先照着敲几遍遇到不懂的就查文档查完继续敲很快就能形成肌肉记忆。等你把这批命令练到不假思索的程度再看 shell 脚本、自动化运维就会发现基础已经打得很扎实了。