简介:本资源是一份面向Linux初学者与系统管理者的命令速查手册,聚焦日常运维、开发环境搭建及服务器管理等实际场景,系统梳理了10大类高频实用命令及其核心用法。内容覆盖文件目录操作(pwd、cd、ls、cp、mv、rm等)、磁盘空间管理(df、du、fsck、mount/umount)、文件压缩备份(gzip、bzip2、zip)、权限与用户管理、网络诊断及文本处理(grep、cat、touch)等完整知识脉络,每条命令均附功能说明、典型示例与关键选项解析,便于快速查阅与实践验证。资源为单文件PDF格式,体积精简仅130KB,结构清晰、排版紧凑,适合作为桌面常备参考或移动端随时翻阅。目前已有5589人学习下载,是兼顾完整性、准确性和便携性的Linux命令入门与巩固利器。
1. 这份《最全Linux常用命令大全.pdf》不是“扫盲手册”,而是我压箱底的故障快查黑匣子
刚接手某高校实验室那台跑着 CentOS 7 的旧服务器时,A同学被一个磁盘满导致 Jenkins 构建失败的问题卡了整整两天:df -h看着根分区 98%,但du -sh * | sort -hr在/var下死活找不到大文件。最后发现是/var/log/journal里堆了半年的二进制日志——而这个关键路径,恰恰藏在du命令的-x(仅同文件系统)选项说明里,也出现在journalctl --disk-usage这个冷门但精准的替代方案旁注中。这份 PDF 里就收着它。它不是给新手背口诀的“命令字典”,而是把ls -l权限位、tar -cjvf压缩链、grep -r --include="*.py"递归搜索这类真实排障链路中必须串联使用的命令组合与边界条件,用最朴素的表格和带注释的命令块钉死在纸面上。适合三类人:刚从图形界面切到终端的转岗运维、需要快速定位生产环境异常的开发、以及像我这样每次写自动化脚本前都习惯翻两页确认-f和-i行为差异的老手。它不讲 Shell 编程原理,但每条命令的-r(递归)、-v(详细)、-h(人类可读)这些高频参数,都配了真实场景下的正反例——比如rm -rf /tmp/*安全,但rm -rf /tmp/后面多敲一个空格变成rm -rf /tmp/(末尾空格),在某些老旧 Bash 版本下会误删整个/tmp目录树。这种血泪经验,PDF 里用加粗+叹号标得明明白白。
2. 文件与目录操作:从 pwd 到 rmdir,为什么ls -la是你每天睁眼第一件事
Linux 文件系统操作是所有命令的基石,但新手常陷在“知道命令却不敢执行”的玄学状态里。这份 PDF 的价值,在于把每个命令的行为边界和默认陷阱拆解成可验证的步骤。比如cd命令,PDF 不只列cd ~回主目录,更强调cd -切换回上一个工作目录这个被严重低估的快捷键——它在调试多级嵌套脚本时能省掉 3 次pwd+cd组合。再如ls,PDF 把-l输出的权限字段drwxr-xr--拆成四段:d(类型)、rwx(所有者)、r-x(组)、r--(其他),并直接关联到chmod的数字表示法(754)。这不是理论,而是你修复 Nginx 配置文件权限时必须对照的坐标系。
2.1 pwd:不只是显示路径,它是你所有相对路径操作的锚点
pwd命令输出当前绝对路径,这是所有cd、cp、mv操作的基准。PDF 特别提醒:当脚本中使用cd ..后执行pwd,输出的是逻辑路径(logical path),而pwd -P才是物理路径(physical path),后者会解析所有符号链接。例如:
ln -s /var/log /home/user/logs cd /home/user/logs pwd # 输出 /home/user/logs(逻辑路径) pwd -P # 输出 /var/log(物理路径)提示:在编写部署脚本时,务必用
pwd -P获取真实路径,否则cp config.conf $(pwd)/backup/可能备份到错误位置。
2.2 cd:相对路径的“.”和“..”不是常识,是安全开关
PDF 明确区分绝对路径(以/开头)和相对路径(不以/开头)。关键细节在于cd ..的行为:它向上跳一级目录,但若当前目录是符号链接,cd ..默认进入链接指向目录的父目录,而非链接文件所在目录的父目录。要强制进入链接文件所在目录的父目录,需用cd -P ..。
# 假设 /home/user/project 是指向 /opt/app/current 的软链 cd /home/user/project pwd # /home/user/project cd .. pwd # /home/user (进入 project 软链所在目录的父目录) cd -P .. pwd # /opt/app (进入软链指向目录的父目录)这个区别在维护多版本应用部署时至关重要——cd ..错一次,git pull就可能污染错误的 release 目录。
2.3 ls:-a和-A的毫厘之差,决定你能否看到 .dockerignore
ls -a显示所有文件,包括以.开头的隐藏文件(如.bashrc,.git);而ls -A(大写 A)则排除.和..两个特殊目录项,只显示真正的隐藏文件。PDF 用对比表格强调:
| 命令 | 显示内容 | 典型用途 |
|---|---|---|
ls -a | .,..,.bashrc,.git | 查看目录完整结构,包括当前/上级目录引用 |
ls -A | .bashrc,.git | 清理临时文件时避免误删.或.. |
注意:
ls -la是日常排查的黄金组合,-l看权限和大小,-a看隐藏配置文件——Nginx 502 错误常因.htaccess权限错误或.user.ini冲突引发,不加-a根本看不到罪魁祸首。
2.4 cat:合并文件时的换行符陷阱与>>的不可逆性
cat最危险的用法是cat file1 file2 > file3——它会覆盖file3。PDF 用加粗警告:永远优先用>>追加,除非你明确需要覆盖。更隐蔽的坑是文件编码和换行符:cat不做任何转换,若file1是 Windows 格式(CRLF),file2是 Unix 格式(LF),合并后file3会混杂换行符,导致sed或awk处理失败。PDF 给出验证命令:
# 检查文件换行符类型 file file1 # 输出包含 "CRLF" 或 "LF" # 强制统一为 Unix 换行符 dos2unix file1 file2 cat file1 file2 > file3这个细节在处理跨平台日志分析脚本时,能避免 80% 的正则匹配失败。
2.5 grep:大小写、正则、递归的三层过滤网
PDF 把grep的核心能力拆成三层过滤:
- 基础层:
grep "error" /var/log/syslog—— 精确匹配字符串; - 增强层:
grep -i "error" /var/log/syslog(-i忽略大小写)、grep -v "warning" /var/log/syslog(-v反向匹配); - 工程层:
grep -r --include="*.log" "timeout" /var/log/(-r递归,--include限定文件类型)。
特别强调grep -E(扩展正则)与egrep等价,但grep -P(Perl 正则)在部分老系统不支持。PDF 给出生产环境高频正则:
# 匹配 IP 地址(简化版,实际需更严格) grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/log/nginx/access.log # 匹配时间戳 "2023-10-05 14:22:33" grep -E '^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}' /var/log/app.log避坑 / 常见问题 / 排查
- 现象:
grep "ERROR" app.log无输出,但用less app.log确认存在 "ERROR" 字样。
原因:日志文件是 UTF-16 编码,grep默认按 UTF-8 解析,字符错位。
解决:iconv -f UTF-16 -t UTF-8 app.log | grep "ERROR"或先用file app.log检查编码。- 现象:
grep -r "config" /etc/报错Permission denied,结果不全。
原因:/etc/shadow等敏感文件无读权限,grep遇错终止。
解决:grep -r "config" /etc/ 2>/dev/null屏蔽错误输出,或sudo grep -r "config" /etc/提权(谨慎!)。- 现象:
grep "user.*admin" auth.log匹配不到 "user login as admin"。
原因:.*是贪婪匹配,但auth.log中实际是 "user login as admin"(中间有空格),而.*默认不匹配换行符,此处无问题;真正原因是auth.log行尾有\r(Windows 风格),grep未识别。
解决:grep -P "user.*admin" auth.log(-P支持更灵活的正则),或先dos2unix auth.log。- 现象:
grep -n "port" nginx.conf返回行号,但编辑时发现行号对不上。
原因:nginx.conf包含include指令,grep只搜索当前文件,未递归包含的子配置。
解决:grep -n "port" $(grep -r "include" /etc/nginx/ | awk '{print $2}' | sed 's/;//')或直接grep -r "port" /etc/nginx/。
3. 磁盘与文件系统管理:df、du、mount的三角校验法
当监控告警说磁盘 95%,df -h显示/分区爆满,但du -sh /* 2>/dev/null | sort -hr却只加起来 70GB——这种经典矛盾,PDF 用“三角校验法”给出标准解法:df看文件系统占用,du看目录实际大小,lsof +L1找被删除但进程仍占用的文件。这三者结果不一致,才是故障的真正入口。PDF 不罗列所有df选项,而是聚焦df -i(inode 使用率)这个常被忽略的维度:当df -h显示空间充足但touch test报错 “No space left on device”,大概率是 inode 耗尽(小文件过多),此时df -i会显示IUse%100%。
3.1 df:-h是起点,-i和-T是破案关键
df默认显示 Block 占用,但df -h(人类可读)、df -i(inode)、df -T(文件系统类型)必须组合使用。PDF 给出典型场景:
# 场景1:Web 服务器日志暴增 df -h /var # 显示 /var 使用率 98% df -i /var # 若 IUse% 也是 98%,说明小文件(如 access.log.1.gz)过多 # 场景2:容器镜像残留 df -T /var/lib/docker # 显示 xfs/ext4,若为 overlay2,需结合 docker system df提示:
df -x tmpfs排除内存文件系统(如/run,/dev/shm),避免干扰判断。
3.2 du:-sh是概览,-h --max-depth=1是定位,-c是验证
du的核心是层级控制。PDF 强调:
du -sh /var/*—— 查看/var下各子目录总大小(-s总计,-h可读);du -h --max-depth=1 /var/log—— 查看/var/log下一级目录大小,快速定位journal或nginx;du -shc /var/log/*——c参数输出总计,验证du结果是否与df差值合理。
一个真实案例:df -h显示/95%,du -shc /却只有 60GB。PDF 指出此时必查:
# 查找被删除但进程仍打开的文件(常见于日志轮转) lsof +L1 | grep deleted # 查看大文件(大于 100MB) find / -xdev -type f -size +100M 2>/dev/null | xargs ls -lh这两条命令在 PDF 的“磁盘故障速查表”中列为必执行项。
3.3 mount:挂载点不是路径,是文件系统的“身份证”
mount命令的精髓在于理解“挂载点”概念。PDF 用比喻说明:文件系统(如/dev/sdb1)是硬盘分区,挂载点(如/mnt/data)是它在目录树中的“身份证地址”。mount不加参数列出所有挂载,但 PDF 强调mount | grep " / "(注意空格)精准匹配根分区,避免误读/boot等子挂载。对于 NFS 挂载,PDF 给出安全参数模板:
# 推荐的 NFS 挂载(硬挂载、后台重试、中断超时) mount -t nfs -o hard,intr,timeo=600,retrans=2 server:/path /mnt/nfs注意:
-o soft(软挂载)在 NFS 故障时返回错误,但可能导致数据丢失;-o hard(硬挂载)会阻塞进程直到恢复,更安全但需配合intr(可中断)。
3.4 umount:卸载前的三重检查清单
PDF 将umount操作提炼为检查清单,避免device is busy错误:
- 进程检查:
lsof +D /mnt/data查看是否有进程在挂载点内工作; - Shell 检查:
pwd确认当前 Shell 未在挂载点内(cd /再umount); - 子挂载检查:
mount | grep "/mnt/data"确认无子挂载(如/mnt/data/sub),需从深到浅卸载。
# 安全卸载流程 cd / lsof +D /mnt/data 2>/dev/null || echo "No process using /mnt/data" umount /mnt/data避坑 / 常见问题 / 排查
- 现象:
umount /mnt/data报错target is busy,但lsof无输出。
原因:挂载点内有子挂载(submount),lsof不显示。
解决:findmnt /mnt/data查看挂载树,umount -R /mnt/data递归卸载(-R选项在较新 util-linux 中支持)。- 现象:NFS 挂载点
ls /mnt/nfs卡住,umount也卡住。
原因:NFS 服务器宕机,客户端处于不可中断睡眠(D state)。
解决:umount -f /mnt/nfs强制卸载(-f),或umount -l /mnt/nfs懒卸载(lazy unmount,立即返回,后台清理)。- 现象:
df -h显示挂载点已消失,但mount仍列出。
原因:挂载时用了--bind或--rbind,df不显示绑定挂载。
解决:findmnt命令可显示所有挂载类型,包括绑定挂载。- 现象:
mount -t cifs挂载 Windows 共享,中文文件名显示为问号。
原因:未指定iocharset=utf8参数。
解决:mount -t cifs //win-server/share /mnt/win -o username=user,password=pass,iocharset=utf8。
4. 文件压缩与归档:tar、gzip、bzip2的组合拳与性能取舍
tar不是压缩命令,而是归档(打包)命令——这是 PDF 开篇就划的重点。新手常混淆tar -czvf(gzip 压缩)和tar -cjvf(bzip2 压缩)的适用场景。PDF 用实测数据说话:对 1GB 文本日志,gzip压缩耗时 12 秒,压缩比 3.2:1;bzip2耗时 45 秒,压缩比 4.1:1;xz(PDF 未提但实践中常用)耗时 90 秒,压缩比 5.3:1。结论直白:开发环境用gzip(快),归档长期保存用xz(省空间),bzip2是过时的折中方案。PDF 的价值在于给出tar的“防呆”参数组合:-cvf创建、-xvf解包、-tvf列表,三个命令共享vf(verbose, file),降低记忆负担。
4.1 tar:-f是文件名开关,-v是调试生命线
tar的-f参数必须紧跟文件名,且是最后一个参数(历史设计缺陷)。PDF 用错误示例警示:
# ❌ 错误:-f 位置错误,tar 会报错 "tar: Cannot open: No such file or directory" tar -cvf archive.tar -f data/ # ✅ 正确:-f 后紧跟归档文件名 tar -cvf archive.tar data/-v(verbose)在 PDF 中被赋予新意义:不仅是“显示过程”,更是验证归档完整性的手段。tar -tvf archive.tar | head -20可快速预览前 20 行文件列表,确认是否包含预期目录结构。
4.2 gzip/bzip2/xz:压缩算法选择不是玄学,是 IO 与 CPU 的权衡
PDF 对比三大算法(基于 Linux 5.10 内核实测):
| 算法 | 压缩速度 | 解压速度 | 压缩比 | 内存占用 | 适用场景 |
|---|---|---|---|---|---|
gzip | ⚡️ 极快 | ⚡️ 极快 | 🟡 中等 (3-4:1) | 🟢 低 | 日志实时压缩、网络传输 |
bzip2 | 🐢 慢 | 🐢 慢 | 🟢 较高 (4-5:1) | 🟡 中 | PDF 中标注“已逐步被 xz 替代” |
xz | 🐌 极慢 | 🐢 慢 | 🔴 最高 (5-7:1) | 🔴 高 | 归档长期保存、ISO 镜像 |
| PDF 给出生产环境推荐: |
tar -cZf archive.Z(compress,已淘汰,PDF 标为“勿用”);tar -czf archive.tgz(gzip,通用兼容);tar -cJf archive.xz(xz,现代首选,-J对应 xz)。
4.3 zip:跨平台的妥协方案与权限丢失陷阱
zip的核心价值是 Windows 兼容,但 PDF 用加粗警告:zip默认不保存 Linux 文件权限和符号链接。unzip解压后文件权限全为 644,链接变文件。解决方案:
# 保存权限(需 zip 3.0+) zip -r archive.zip dir/ -X # -X 排除扩展属性,但权限仍丢失 # ✅ 正确做法:用 tar.gz 代替 zip,或解压后手动 chmod unzip archive.zip chmod -R 755 dir/ # 重置权限(不精准,仅作示例)PDF 指出:若必须用zip,应在 Windows 端用 7-Zip 创建,Linux 端用unzip -X解压(-X尝试恢复 NTFS 权限,对 Linux 无效)。
4.4 归档校验:sha256sum是你的后悔药
PDF 在“文件备份”章节末尾强调:任何归档操作后,必须生成校验和。tar本身不提供校验,需管道组合:
# 创建归档并生成校验和(一行命令) tar -cf backup.tar /data && sha256sum backup.tar > backup.tar.sha256 # 验证归档完整性 sha256sum -c backup.tar.sha256 # 输出 "backup.tar: OK"避坑 / 常见问题 / 排查
- 现象:
tar -xzf archive.tgz解压后文件缺失,tar -tzf archive.tgz显示正常。
原因:归档文件损坏,但tar -t仅检查头部,不校验数据块。
解决:gzip -t archive.tgz先测试 gzip 流完整性,再解压。- 现象:
tar -cjf archive.tbz dir/报错bzip2: Cannot write to compressed file。
原因:磁盘空间不足,bzip2缓冲区溢出。
解决:df -h检查/tmp(bzip2默认用/tmp作临时目录),或设置TMPDIR=/path/to/large/disk。- 现象:
tar -cf archive.tar /var/log归档巨大,但du -sh archive.tar显示很小。
原因:/var/log包含设备文件(如/dev/zero)或 FIFO,tar默认跳过。
解决:tar -cf archive.tar --ignore-failed-read /var/log,或先find /var/log -type f -size +0 -print0 | tar -cf archive.tar --null -T -。- 现象:
unzip archive.zip解压后中文文件名乱码。
原因:zip 文件在 Windows 创建时用 GBK 编码,Linuxunzip默认 UTF-8。
解决:unzip -O GBK archive.zip(-O指定编码),或用7z x archive.zip(7z 自动检测编码)。
5. 用户、权限与系统信息:chmod、su、ps的最小必要原则
Linux 权限模型是安全基石,但 PDF 从不讲抽象理论,只教“最小必要原则”:给用户刚好够用的权限,给文件刚好够用的权限。chmod 777在 PDF 中被标记为“红色禁区”,取而代之的是chmod 644(文件)和chmod 755(目录)的黄金组合,并解释为何755目录比777更安全:组和其他用户只有读和执行(进入)权限,无法删除目录内文件(删除需父目录写权限)。ps命令在 PDF 中被定位为“进程快照工具”,ps aux和ps -ef的区别被简化为:aux是 BSD 风格(a=all,u=user-oriented,x=no tty),-ef是 System V 风格(e=all,f=full),两者输出字段不同但功能等价。
5.1 chmod:数字法与符号法的实战切换
PDF 认为数字法(如755)适合脚本固化,符号法(如u+x,g-w)适合交互式微调。关键教学点:
chmod u+x script.sh—— 给所有者添加执行权限(比chmod 755 script.sh更精准);chmod go-w /var/www/html—— 移除组和其他用户的写权限,防止 Web 目录被篡改;chmod a=r,u+w /etc/config.conf—— 所有人可读,仅所有者可写(安全配置文件标准权限)。
PDF 特别指出chmod -R(递归)的风险:chmod -R 755 /var/www会把所有文件(包括.php)设为可执行,可能引发安全漏洞。正确做法:
# 目录设 755,文件设 644 find /var/www -type d -exec chmod 755 {} \; find /var/www -type f -exec chmod 644 {} \;5.2 su 与 sudo:su -的短横线是灵魂
PDF 用对比表格揭示su和su -的本质区别:
| 命令 | 环境变量 | 工作目录 | Shell 配置 |
|---|---|---|---|
su user | 保留原用户环境 | 保留原目录 | 不加载目标用户 shell 配置 |
su - user | 加载目标用户环境 | 切换到目标用户主目录 | 加载~/.bashrc,~/.profile |
提示:
su -(或su -l)是唯一能获得完整 root 环境的方式,sudo -i等效,但sudo command仅提权单条命令。
5.3 ps:ps aux的字段密码与top的替代方案
ps aux输出的STAT字段是 PDF 的重点解读对象:
R(Running):正在运行或可运行;S(Sleeping):休眠,等待事件;Z(Zombie):僵尸进程,子进程已终止但父进程未回收;<:高优先级(nice 值负);N:低优先级(nice 值正)。
PDF 给出排查僵尸进程的命令链:
# 查找僵尸进程 ps aux | awk '$8 ~ /Z/ {print}' # 查看其父进程 PID ps -o ppid= -p ZOMBIE_PID # 替换 ZOMBIE_PID # 向父进程发送 SIGCHLD 信号促使其回收 kill -s SIGCHLD PARENT_PID避坑 / 常见问题 / 排查
- 现象:
ps aux | grep nginx显示多个 nginx 进程,但systemctl status nginx显示 inactive。
原因:nginx 以 daemon 模式运行,systemctl管理的是主进程,ps显示的是 worker 进程。
解决:ps -ef | grep nginx看进程树,或systemctl list-units --type=service | grep nginx。- 现象:
ps aux输出中COMMAND列被截断,看不到完整路径。
原因:终端宽度限制。
解决:ps auxww(w选项扩展宽度),或ps -eo pid,user,args自定义输出。- 现象:
top中%CPU显示 300%,但只有 4 核 CPU。
原因:%CPU是累计值,300% 表示该进程占用了 3 个核心的 100% 时间。
解决:top中按1显示各核心负载,或htop(需安装)可视化多核。- 现象:
su - user后pwd显示/root,而非/home/user。
原因:su -未指定用户,默认切换到 root,/root是 root 主目录。
解决:su -l user(-l= login)明确指定用户,或su - user(注意空格)。
6. 网络与故障诊断:ping、netstat、ss的现代演进与tcpdump入门
PDF 的“网络操作命令”章节是全文更新最勤的部分——它坦承netstat已被ss(socket statistics)取代,并给出平滑迁移指南。ss -tuln(t=TCP,u=UDP,l=listening,n=numeric)完全等价于netstat -tuln,但速度提升 10 倍。PDF 不回避tcpdump的陡峭学习曲线,而是给出三条保命命令:tcpdump -i eth0 port 80(抓 HTTP 流量)、tcpdump -i eth0 host 192.168.1.100(抓指定主机)、tcpdump -i eth0 -w capture.pcap(保存到文件供 Wireshark 分析)。它强调:tcpdump是网络问题的终极黑匣子,但ping和ss应是你的第一道防线。
6.1 ping:-c、-W、-s的组合拳定位网络层故障
ping不是简单“通不通”,PDF 教你用参数组合诊断:
ping -c 4 -W 2 8.8.8.8:发 4 个包,超时 2 秒,排除临时抖动;ping -s 1472 -M do 8.8.8.8:发 1472 字节数据(1500 MTU - 20 IP header - 8 ICMP header),-M do禁止分片,测试 MTU 是否正常;ping -f 8.8.8.8:洪水模式(flood ping),快速检测丢包率(需 root 权限)。
提示:
ping失败时,先ping 127.0.0.1(本地环回),再ping网关,最后ping外网,逐层隔离。
6.2 netstat/ss:从“连接状态”到“监听端口”的精准映射
PDF 对比netstat和ss:
| 功能 | netstat 命令 | ss 命令 | 优势 |
|---|---|---|---|
| 查看监听端口 | netstat -tuln | ss -tuln | ss更快,输出更简洁 |
| 查看 ESTABLISHED 连接 | netstat -tn | ss -tn | ss支持-o显示定时器 |
| 查看进程关联 | netstat -tulpn | ss -tulpn | ss需sudo,但更可靠 |
| PDF 给出生产环境高频命令: |
# 查看所有监听端口及对应进程(需 sudo) sudo ss -tulpn | grep ":80" # 查看特定 IP 的连接数(防 CC 攻击) ss -nt src 192.168.1.100 | wc -l6.3 telnet/rlogin:诊断端口连通性的“瑞士军刀”
PDF 明确telnet的现代价值:不是远程登录,而是 TCP 端口探测工具。telnet host port成功即证明目标端口开放且服务响应。rlogin因安全缺陷(明文传输)被 PDF 标为“仅用于内网调试,生产禁用”。
# 测试 MySQL 端口 telnet db-server 3306 # 测试 SMTP 端口 telnet mail-server 25 # 若连接成功,输入 QUIT 退出;若超时,说明防火墙或服务未启动。6.
本文还有配套的精品资源,点击获取