Linux常用命令手册:从文件操作到故障排查的实战指南
2026/9/7 23:48:17 网站建设 项目流程

简介:这份Linux常用命令手册是一份面向Linux初学者、运维及开发人员的速查型PDF文档,系统梳理了最高频的命令用法。内容按专题模块组织,覆盖文件管理、磁盘管理、文件权限、打印管理、用户管理与软件管理六大板块,例如ls、cd、mkdir、rm等基础命令,以及fdisk分区、mount挂载、chmod权限、useradd用户与rpm软件包操作等进阶命令,每条命令均附用法和功能注解,方便对照执行。资源包为单个PDF文件,大小仅110KB。已有742人浏览学习,适合日常快速参考。手册以表格化排版,按分类编号排列,读者可迅速定位所需命令,减少在搜索引擎或man手册中的查找时间,也能系统理解Linux命令的整体脉络,提升服务器与开发环境中的操作效率。

1. 别急着背命令,先搞懂这套手册的使用姿势

我见过太多人下载了各种版本的Linux命令大全,收藏了几百条命令,真到了服务器上排查问题时,却连日志在哪儿看都要想半天。原因很简单:命令本身只是工具,真正值钱的是"在什么场景下用哪条命令、为什么用它、用的时候要注意什么"这条完整的决策链。

这份"Linux常用命令手册大全"如果只被当成字典来翻,那它发挥的作用可能不到三成。我整理这套内容的时候,核心思路不是按字母表罗列,而是按日常工作的真实链路来组织——你登录一台陌生服务器,第一步要摸清什么;部署服务的时候要操作什么;服务出故障了要按什么顺序排查;批量处理文件时有哪些组合技。所有命令都放在这个链路里,它们才是"活"的。

适合看这份手册的人,我大致分三类:

  • 刚接触Linux的运维或开发新人:需要一份"按场景查答案"的速查参考,而不是背完就忘的清单。
  • 从Windows切过来的使用者:他们在图形界面下点鼠标很熟,但到了纯命令行环境会手足无措,这类人更需要的是"这个操作用什么命令替代"的对照思维。
  • 有一定基础但不成体系的从业者:会那么几十条命令,但碰到排查问题或写脚本时总感觉不够用,这里补充的细节和坑能帮他们把零散经验串成闭环。

下面就从最常用的文件操作讲起,一步一步展开。

2. 文件与目录操作:每天用到最多的基本功

2.1 列出文件别再只会ls -l

ls大概是所有人学会的第一条Linux命令,但很多人用了一两年还是只会lsls -l。实际上,ls在日常工作中的正确打开方式远不止这两种,我按使用频率给你排个序:

ls -l # 查看权限、属主、大小、修改时间 ls -lh # 以人类可读的方式显示大小,比如 4.0K、234M,强烈推荐 ls -lt # 按修改时间倒序排序,最新的文件在最上面,查日志时非常好用 ls -lrt # 按修改时间正序排序,最旧的在最上面,配合tail看历史日志时常用 ls -ld */ # 只看当前目录下的所有子目录,不加-d会显示目录里面的内容 ls -la # 包含隐藏文件,以点开头的文件,排查问题时常常用得到

一个小经验:ls -lht是我个人最常用的组合,加一个-t按时间排序,找刚刚生成或修改过的文件时效率高到飞起。如果目录里文件特别多,比如日志目录成千上万个文件,ls会刷屏刷得你怀疑人生,这时候用ls -lht | head -20只取前20行就够了。

2.2 切换目录与查找文件:用最少步骤到达目标

cd本身没什么好说的,但和路径相关的几个技巧很值得讲:

cd - # 回到上一次所在目录,在多个目录间来回切换时相当于一键往返 cd ~ # 回到当前用户的家目录 cd ../.. # 向上跳两级,层级多了比一级一级跳效率高

查找文件时,find才是真正的重型武器。新手容易犯的错误是一上来就全盘扫描,比如find / -name "xxx",结果等了十几分钟还在跑。正确思路是先用df -h看清磁盘分区,再到最可能的目录里找。我用得最多的几条:

find /etc -name "*.conf" # 按名字精确匹配 find /var/log -name "*.log" -mtime -7 # 找7天内修改过的日志文件 find / -type f -size +500M # 找大于500MB的大文件,排查磁盘占用时必备 find . -type f -name "*.log" -exec rm -f {} \; # 找到并删除匹配文件

这里特别提醒一下-exec的写法:-exec 命令 {} \;结尾的分号和花括号不能少,{}代表find找到的每一个文件占位符,\;表示命令结束。很多新手在这里翻车,少了反斜杠或者少了分号,命令要么报错要么行为诡异。

2.3 文件内容查看:cat、less、tail的边界在哪里

这是我认为手册里最值得仔细看的一部分,因为太多人在不该用cat的场景用了cat

cat适合查看内容较短的文件,或者将多个文件合并输出。但遇到大文件或日志文件,cat会把全部内容一次性打到屏幕上,终端卡死不说,后面的内容根本来不及看。这时候应该用less

less /var/log/messages

less支持上下翻页、按/搜索关键字、按G跳到底部、按g跳到头部,查看大文件时是真正的效率担当。而且它不会像vim那样占用编辑状态,很多人都忽略了这个轻量级方案。

tail则是查看日志的标配。标准用法四个字,动态跟踪

tail -f app.log # 持续输出新增的日志内容,排查线上问题时开着它不动 tail -n 200 app.log # 查看日志的最后200行 tail -f -n 50 app.log # 先显示最后50行,再持续跟踪新增内容

等于说tail -f拉起之后,新写入的日志会实时滚出来,你就能一边复现问题一边看日志输出。配合grep筛选关键字,排查思路会非常清晰。

3. 文本处理三剑客:grep、sed、awk的组合威力

如果你只学三个文本处理工具,那一定是grep、sed、awk这三个。单独用它们已经很强大,一旦组合起来,威力大到可以处理绝大多数文本分析任务。

3.1 grep:不只是"找关键字"

grep表面上只是按关键字匹配行,但有几个细节决定了你是新手还是老手:

grep "error" app.log # 基础用法:找到所有包含error的行 grep -i "error" app.log # -i 忽略大小写,Error、ERROR、error都能匹配 grep -v "DEBUG" app.log # -v 反向匹配,排除包含DEBUG的行 grep -r "timeout" /etc/nginx/ # -r 递归搜索整个目录下所有文件 grep -E "error|failed|exception" app.log # 扩展正则,一次匹配多个关键字 grep -n "error" app.log # 显示匹配行所在的行号

实际项目里,grep -E "关键字1|关键字2"搭配tail -f是我排查线上问题的固定组合。另外,grep -n看起来不起眼,但当你用sedawk按行号去处理时,它给的行号就是定位锚点。

3.2 sed:流式编辑器的增删改查

sed的本质是对文本流做编辑操作,它不会修改原文件(除非加-i参数),只是把处理后的结果输出到标准输出。理解这一点对避免误操作很重要。

实战中最常用的场景是替换按行删除

sed -i 's/old/new/g' config.txt # 将文件里所有old替换为new,并写入原文件 sed -i 's/^#Port 22/Port 22/' /etc/ssh/sshd_config # 将配置里被注释的Port 22取消注释 sed -n '20,50p' app.log # 查看第20到50行内容 sed -i '/^$/d' file.txt # 删除所有空行 sed -i '/debug/d' app.log # 删除包含debug的行

-i参数是把双刃剑。改配置时它很方便,但如果正则写错了,等于直接污染了原文件。我的习惯是先用不带-i的命令跑一遍查看结果,确认无误后再加-i真正写入。

3.3 awk:按列处理数据的隐形王者

awk把每行按分隔符拆成多个字段,默认用空格作为分隔符,$1表示第一列,$2表示第二列,$NF表示最后一列。

我日常用到的高频场景是分析日志和统计数据:

awk '{print $1, $NF}' access.log # 打印每行的第一列和最后一列 awk -F':' '{print $1}' /etc/passwd # 指定冒号作为分隔符,提取用户名列表 awk '{sum += $NF} END {print sum}' file # 对最后一列的所有数值求和 sort file | uniq -c | sort -rn # 统计词频并按次数降序排列

举一个最典型的场景:Nginx访问日志的access.log里,最后一列通常是响应耗时。想知道哪些接口最慢,直接awk '{print $NF, $7}' access.log | sort -rn | head -20,慢接口立刻现形。这三件套组合起来,你能在纯命令行环境下完成报表级的分析工作。

4. 权限与用户管理:服务器安全的第一道门槛

4.1 看懂权限位的真正含义

ls -l输出的第一列,比如-rw-r--r--,由10个字符组成,去掉最前面的文件类型标识(-普通文件、d目录、l软链接),剩下的9个字符分成三组,依次代表属主权限、属组权限、其他人权限。每组三位,分别是读(r)、写(w)、执行(x)。

数字表示法也很好理解:r=4,w=2,x=1。755就是属主7(rwx),属组5(r-x),其他人5(r-x)。644就是常见的文件默认权限,属主可读写,其他人只读。

修改权限用chmod,修改属主和属组用chown

chmod 755 script.sh # 给脚本添加执行权限 chmod -R 755 /data/www # -R 递归修改目录下所有文件 chown www:www /data/www/app # 将目录属主和属组都改为www用户 chown -R www:www /data/www # 递归修改

一个经常踩的坑:修改网站目录权限时直接chmod -R 777图省事,这在本地开发环境可以接受,但在生产环境等于直接把服务器大门敞开。合理做法是目录用755,文件用644,只有需要写的目录(比如上传目录)才单独放宽。

4.2 用户管理实操

创建用户和授权,是每个Linux管理员绕不开的工作:

useradd -m -s /bin/bash zhangsan # 创建用户并创建家目录,指定默认shell passwd zhangsan # 设置或重置密码 usermod -aG sudo zhangsan # 将用户加入sudo组,CentOS下是wheel组 id zhangsan # 查看用户UID、GID和所属组 userdel -r zhangsan # 删除用户并同时删除家目录和邮件池

关于sudo这里多说一句:生产环境尽量不要直接使用root操作,养成用普通用户加sudo的习惯。不同发行版给用户授权免密sudo的配置路径不一样,Debian/Ubuntu系是/etc/sudoers/etc/sudoers.d/下的文件,CentOS/RHEL是wheel组默认有sudo权限。改/etc/sudoers之前一定用visudo命令修改,它会做语法检查,防止写错导致sudo直接崩溃。

4.3 文件传输与打包压缩

这个板块和权限强相关,因为传输文件时经常碰到权限不一致的问题。日常最常用的两个工具是scprsync

scp /data/app.jar root@192.168.1.10:/opt/app/ # 本地上传到远程 scp root@192.168.1.10:/opt/backup.tar.gz /data/ # 远程下载到本地 rsync -avP /data/ root@192.168.1.10:/backup/ # 增量同步,大目录同步首选

rsyncscp的区别在于:scp是全量复制,每次把文件完整传一遍;rsync会先比较源和目标的差异,只传有变动的部分。数据量大或者需要周期性同步的场景,无脑选rsync

打包压缩的命令也是高频操作:

tar -czvf app.tar.gz /opt/app/ # 打包并gzip压缩,-c创建 -z压缩 -v显示过程 -f指定文件 tar -xzvf app.tar.gz -C /opt/ # 解压到指定目录,-C就是指定解压路径 tar -cjvf app.tar.bz2 /opt/app/ # 使用bzip2压缩,体积更小但速度更慢 unzip files.zip -d /data/ # 解压zip格式

老生常谈的坑:解压tar包前最好先看一下包内的目录结构,tar -tzvf app.tar.gz列出包内文件清单,防止解压后文件散落一地。

5. 系统状态监控与排查:服务器出问题时的求生指南

5.1 磁盘和内存:先说清楚用什么顺序排查

我接手的服务器故障里,八成以上集中在磁盘满、内存不足、CPU过高这三类。排查的第一步永远是看资源水位:

df -h # 查看磁盘分区使用情况,-h以G或M显示 du -sh * # 查看当前目录各子目录占用情况,定位谁占用了磁盘 du -sh /var/log/* # 直接看日志目录里哪些文件最大 free -h # 查看内存使用情况和swap占用

df -h显示磁盘满了,但du -sh *看下来没发现哪个目录特别大,这种情况我碰到过很多次,通常是已删除但还被进程占用的文件在捣鬼。进程打开着文件,文件被rm删除了,但磁盘空间不会释放。用lsof | grep deleted找出占用进程,重启这个进程,空间才能释放。这个坑非常隐蔽,也是很多新手卡死的地方。

5.2 进程和CPU排查

CPU飙高时的标准排查动作:

top # 进入实时状态界面,按大写P按CPU排序,按大写M按内存排序 htop # 更友好的交互界面,直接用鼠标都能操作 ps -ef | grep java # 精确查找某个进程的信息 ps aux --sort=-%mem # 按内存占用降序排列所有进程

查到异常进程ID后,再按需处理:

kill -9 12345 # 强制杀死进程 kill 12345 # 正常终止进程,先给它做清理的机会

这里有个重要原则:kill是最后手段,不是第一手段。先登录服务器看一下进程是什么、由谁启动的,再决定怎么处理。盲目kill -9可能让你连业务一起干掉,尤其生产环境,宁可多确认几句也别急着下命令。

5.3 查看系统基本信息和日志分布

拿到一台不熟悉的服务器,我通常会先用这几条命令快速摸底:

uname -a # 查看内核版本 cat /etc/os-release # 查看发行版名称和版本号,判断属于Debian系还是RedHat系 uptime # 查看负载均值,1分钟、5分钟、15分钟分别多少

系统日志的位置因发行版而异,这也是很多人排查问题时的第一个障碍。Debian/Ubuntu系日志通常在/var/log/syslog,CentOS/RHEL系是/var/log/messages。新版本的系统很多用journalctl统一管理日志:

journalctl -u nginx # 查看某个服务的全部日志 journalctl -u nginx -f # 动态跟踪服务日志 journalctl --since "today" # 查看今天的日志

我之前处理过一个nginx启动失败的问题,nginx -t提示配置错误,但错误信息不够具体。用journalctl -u nginx把服务日志拉出来,里面清清楚楚写了端口被占用了。所以排查问题时养成先看日志的习惯,能省掉大量猜测的时间。

6. 网络排查与远程操作:从能ping通到真正能用

6.1 端口和连接状态排查

网络排查中最常见的一个组合拳是:先看服务是否在监听,再试着访问验证连通性,最后检查防火墙规则。

netstat -tlnp # 查看TCP监听端口和对应进程,-t tcp -l 监听 -n 不解析域名 -p 显示进程 ss -tlnp # netstat的替代品,结果更清晰,新系统推荐这个 curl -I https://example.com # 查看HTTP响应头,确认服务是否正常返回 ping -c 4 example.com # 测试基本连通性

拿端口占用来说,我要在服务器上部署一个新nginx,端口8080启动失败,第一件事就是ss -tlnp | grep 8080,看哪个进程占了这个端口。把输出贴出来,哪个进程占用一目了然,顺带能看到进程的PID,再决定是改服务端口还是杀掉旧进程。

6.2 查看网络配置和DNS解析

ip addr # 查看所有网卡的IP地址(老命令是ifconfig) ip route # 查看路由表,确认默认网关 cat /etc/resolv.conf # 查看DNS配置 nslookup example.com # 测试域名解析是否正常

排查"能ping通但业务不通"的问题时,我的固定套路是:先ping网关看链路通不通,再nslookup看域名解析正不正确,最后curl测试业务端口。三步走下来,问题基本能定位到具体哪一层。

6.3 远程执行与文件同步

远程操作除了上面讲的scprsync之外,还有一个经常被低估的命令ssh本身——它可以直接在本地执行远程命令:

ssh root@192.168.1.10 "df -h" # 直接查看远程服务器磁盘 ssh root@192.168.1.10 "uptime && free -m" # 多条命令用&&连接

这个用法在批量巡检多台服务器时效极高:不用一台一台登录,直接在本地循环执行就行。比如在本地写个for循环,依次ssh所有机器执行uptime,一批服务器负载情况几秒钟就看完了。

7. 进程后台运行与任务调度:让命令自己跑起来

7.1 nohup和systemd:哪个更适合你

开发环境或临时任务,nohup是最简单的"关闭终端后继续运行"方案:

nohup java -jar app.jar > app.log 2>&1 &

拆开看:nohup让进程忽略挂断信号,> app.log把标准输出重定向到文件,2>&1把错误输出也重定向到同一个文件,最后的&让进程在后台运行。如果不加2>&1,程序崩了之后报错信息根本看不到——这是新手最容易遗忘的细节。

生产环境的服务管理,还是建议用systemd

systemctl start nginx # 启动服务 systemctl status nginx # 查看服务运行状态 systemctl enable nginx # 设置开机自启 systemctl restart nginx # 重启服务 systemctl daemon-reload # 修改service文件后重载配置

需要注意systemctl restartsystemctl reload的差别:reload只是重新加载配置文件,不中断服务;restart是彻底停止再启动,业务会有短暂中断。生产环境改配置首选reload,除非配置文件改动太大。

7.2 crontab定时任务

定时任务另一个高频场景是crontab。基本操作:

crontab -e # 编辑当前用户的定时任务 crontab -l # 查看已有的定时任务 crontab -r # 全部删除(慎用)

时间规则里五个星号分别代表分钟、小时、日、月、星期。举几个实际例子:

0 2 * * * /opt/backup.sh # 每天凌晨2点执行备份脚本 */5 * * * * curl -s http://localhost/health # 每5分钟做一次健康检查 0 0 * * 0 /opt/cleanup.sh # 每周日凌晨执行清理

用crontab最容易踩的坑是脚本里的环境变量问题。命令行下明明能跑的脚本,进了crontab就是"命令找不到"。原因在于crontab执行时不会加载登录shell的环境变量,脚本里最好使用绝对路径,或者在脚本开头手动source /etc/profile,否则排查半天都找不到原因。

8. 容易混淆的命令对比与最后的经验补充

作为补充,我把平时学员和同事问得最多的几组易混命令放在一起做个对比。

8.1 四张速查表

场景推荐命令不推荐命令原因
查看大文件内容lesscatcat会一次性加载全部内容,内存和显示都遭殃
查看最新日志tail -fcattail -f能持续跟踪新增内容
拷贝大目录rsynccp -rrsync支持增量、断点续传,cp全量拷贝效率低
批量改文件名renamemv脚本rename支持正则,改造效率极高
命令功能典型误用
ln -s创建软链接不加-s会创建硬链接
chmod修改权限用777解决问题,安全风险高
sudo提权执行长期用root执行一切操作
umount卸载挂载点直接在挂载目录内执行,提示设备忙
命令数据是否写入原文件是否需要重定向
sed -i直接写入不需要
sed不写入需要> newfile
awk不写入需要> newfile
sort file不写入需要-o file或重定向
命令覆盖范围执行方式
crontab -l当前用户查看
systemctl list-timerssystemd定时器查看
at一次性任务到达指定时间执行一次

8.2 最后分享一个很小的习惯

动手敲命令之前,先花十秒钟想一下这条命令执行后的影响范围。改配置前先备份,删文件前先看清路径,批量操作前先拿小目录试跑一遍——这些习惯比多背一百条命令都重要。我在生产环境执行的每一个rm -rf、每一条带-ised,执行前都会强制自己确认一遍当前目录和命令路径。这个习惯帮我避免过不止一次灾难级误操作。

这套Linux常用命令手册的目录就是按这个逻辑铺开的:文件操作、文本处理、权限管理、故障排查、网络操作、任务调度,每条命令背后都连着实际工作场景。把这条链路顺下来,比零散地背命令要记得牢、用得顺,也才是这份手册真正想给你的东西。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询