简介:这是一份面向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 rm='rm -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配合--color=auto能让匹配高亮,肉眼定位快很多。
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匹配完整命令行,比只匹配进程名更精确。终止进程优先发TERM(15),给程序清理资源的机会,无响应再发KILL(9)。直接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 用apt,CentOS/RHEL 老版本用yum,新版本用dnf。
| 操作 | Debian/Ubuntu | CentOS/RHEL |
|---|---|---|
| 更新索引 | apt update | yum makecache/dnf makecache |
| 安装 | apt install nginx | yum install nginx |
| 卸载 | apt remove nginx | yum remove nginx |
| 搜索 | apt search nginx | yum search nginx |
| 查看信息 | apt show nginx | yum 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 ll='ls -alth'、alias ports='ss -tlnp'、alias big='du -sh */ | sort -rh | head -10'。别名不是偷懒,而是把「想查什么」和「敲什么」之间的距离缩短,让排查动作更快。改完source ~/.bashrc生效,新开终端也会自动加载。
命令的熟练度没有捷径,但有方法:场景驱动、最小复现、笔记沉淀、别名加速。这四条坚持下来,半年后回头看,你会发现自己面对一台陌生服务器时,已经能从容地敲出该敲的那几条命令。希望帮到你。
本文还有配套的精品资源,点击获取