30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度这次我们来看 Linux 核心命令。对于开发者、运维工程师或者任何需要与服务器、嵌入式设备打交道的人来说Linux 命令行是绕不开的基本功。但很多人可能只是记住了几个常用命令对于命令背后的原理、不同命令的适用场景以及如何组合使用往往一知半解。这篇文章的目标很直接从“怎么用”讲到“为什么这么用”帮你一次性理清那些最核心、最关键的 Linux 命令让你不仅会敲更懂其意。我们将重点关注那些在系统管理、问题排查、性能分析和日常开发中真正高频使用的命令。比如如何快速查看系统资源CPU、内存、磁盘的真实占用如何高效地查找、过滤和处理文本与文件如何管理进程和网络连接更重要的是我们会深入到/proc文件系统、管道、重定向、权限模型等底层原理让你明白命令的输出结果从何而来以及如何根据原理举一反三组合出更强大的命令链。本文适合所有层次的 Linux 用户初学者可以按图索骥建立系统性的命令知识框架有经验的用户则可以深入原理部分巩固对系统行为的理解提升排查复杂问题的能力。接下来我们将从系统信息探查开始逐步深入到文件操作、文本处理、进程管理和网络工具最后探讨命令组合与 Shell 编程基础。1. 核心能力速览Linux 命令体系在深入具体命令前我们先对 Linux 命令的核心能力做一个概览。这有助于你理解整个知识体系的框架。能力项说明与典型命令系统信息探查查看硬件CPU、内存、磁盘和软件内核、发行版信息。命令uname,cat /proc/cpuinfo,free,df,dmidecode文件与目录操作基础的增删改查、权限管理、查找与归档。命令ls,cd,cp,mv,rm,find,chmod,tar文本查看与处理查看文件内容、搜索、过滤、替换、统计。命令cat,less,grep,awk,sed,sort,uniq,wc进程管理与监控查看、控制、终止进程监控系统资源动态。命令ps,top,htop,kill,pstree,lsof网络工具检查网络配置、测试连通性、监控端口与连接。命令ip,ifconfig,ping,netstat,ss,curl,wget用户与权限管理管理用户、组设置文件权限和所有权。命令useradd,usermod,chown,chmod,sudo,passwd输入输出重定向控制命令的输入来源和输出去向是命令组合的基石。符号,,,|Shell 环境与脚本理解环境变量、编写自动化脚本。涉及变量、条件判断、循环、函数。这个表格勾勒出了 Linux 命令学习的核心路径。下面我们将选取每个类别中最关键的命令不仅讲解用法更揭示其工作原理。2. 系统信息探查从命令到/proc文件系统当你登录一台新服务器第一件事往往是“看看这台机器什么样”。相关的命令很多但它们的原理大多指向同一个地方/proc文件系统。2.1 查看 CPU 信息理解/proc/cpuinfo网络搜索材料中给出了经典的查看 CPU 信息的命令组合我们来拆解其原理# 1. 查看物理 CPU 的个数 cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l # 2. 查看每个物理 CPU 的核心数即核数 cat /proc/cpuinfo | grep “cpu cores” | uniq # 3. 查看逻辑 CPU 的个数总线程数 cat /proc/cpuinfo | grep “processor” | wc -l原理剖析/proc/cpuinfo是一个特殊的虚拟文件它并非存储在磁盘上而是内核在每次读取时动态生成的反映了当前 CPU 的实时信息。physical id每个物理 CPU 的唯一标识符。通过sort | uniq去重后计数就得到了物理 CPU 的数量。cpu cores表示每个物理 CPU 中包含的独立计算核心数量。uniq去重是因为每个逻辑 CPU线程的信息段里都重复包含这个值我们只需要一个。processor逻辑处理器的编号从 0 开始。如果 CPU 支持超线程Hyper-Threading那么逻辑 CPU 数 物理 CPU 数 × 每 CPU 核数 × 2或其他超线程倍数。直接计数processor的条目数就得到了系统可用的总线程数。一个更直观的命令lscpu命令将这些信息进行了格式化整理输出更易读其数据源同样主要来自/proc/cpuinfo。2.2 查看内存与系统版本# 查看内存信息 cat /proc/meminfo # 或使用更友好的 free 命令 free -h # 查看内核版本 uname -a cat /proc/version # 查看 Linux 发行版信息 cat /etc/os-release lsb_release -a cat /etc/redhat-release # 适用于 RedHat/CentOS 系 cat /etc/issue原理剖析/proc/meminfo动态内存状态包括总内存、空闲内存、缓存、缓冲区等。free命令是对此文件的解析和美化输出。uname系统调用直接获取内核相关信息系统名、节点名、内核发行版、内核版本、硬件架构等。/etc/*-release和/etc/issue这些是发行版维护的静态文本文件包含了该 Linux 发行版的名称和版本信息。2.3 查看机器硬件型号# 需要 root 权限 sudo dmidecode | grep “Product Name” # 或查看更具体的系统信息 sudo dmidecode -t system原理剖析dmidecode命令直接从系统的 DMIDesktop Management Interface 现在叫 SMBIOS表中读取信息。这个表是 BIOS/UEFI 在系统启动时写入内存的包含了主板、BIOS、CPU、内存等硬件的详细生产信息。它不依赖于/proc或/sys。3. 文件与目录操作权限模型与 inode文件操作是 Linux 的基础其背后的权限模型和文件系统概念是关键。3.1 列表查看ls与详细信息ls -l输出类似-rwxr-xr-x 1 user group 1234 May 1 10:00 script.sh原理剖析第一个字符文件类型。-普通文件d目录l符号链接c字符设备b块设备。后续 9 个字符权限位分三组属主、属组、其他用户每组rwx读、写、执行。数字1硬链接计数。user group文件所有者和所属组。inode 与文件名ls -i可以查看 inode 号。文件名只是 inode 的一个“别名”。删除文件的本质是减少其 inode 的链接计数当计数为 0 且无进程打开时磁盘空间才会被真正释放。3.2 查找文件findfind命令功能强大因为它直接遍历文件系统根据 inode 信息进行匹配。# 查找当前目录下所有 .log 文件并删除7天前的 find . -name “*.log” -mtime 7 -delete # 查找属于用户 www-data 的文件并修改权限 find /var/www -user www-data -exec chmod 644 {} \;原理剖析find会递归扫描指定路径下的每个目录条目读取其 inode 中的元数据如文件名、大小、修改时间、所有者等进行过滤。-exec参数对每个匹配到的文件执行后续命令{}是占位符\;表示命令结束。3.3 归档与压缩tar理解tar打包和gzip/bzip2/xz压缩的区别很重要。# 仅打包不压缩 tar -cvf archive.tar /path/to/dir # 打包并用 gzip 压缩 tar -czvf archive.tar.gz /path/to/dir # 解压到当前目录 tar -xzvf archive.tar.gz # 解压到指定目录 tar -xzvf archive.tar.gz -C /target/path原理剖析tar最初用于磁带归档Tape ARchive它将多个文件和目录的数据及元数据如权限、所有者顺序打包成一个单一的文件.tar。这个文件大小基本等于原文件总和。压缩工具如gzip则对这个打包文件进行算法压缩生成.tar.gz或.tgz文件。-z选项让tar自动调用gzip。4. 文本处理三剑客grep, sed, awk这是 Linux 命令行文本处理的灵魂组合使用可以解决绝大多数日志分析、数据提取问题。4.1 grep全局正则表达式搜索grep在文件中搜索匹配模式的行。# 在 nginx 日志中查找包含 404 的行 grep “404” /var/log/nginx/access.log # 忽略大小写 grep -i “error” app.log # 显示匹配行及其后 3 行上下文 grep -A 3 “fatal error” system.log # 使用正则表达式查找以 192.168 开头的 IP grep -E “^192\.168” access.log # 递归搜索当前目录下所有文件 grep -r “TODO” .原理剖析grep读取输入流文件或标准输入逐行与给定的模式字符串或正则表达式进行匹配。它非常高效因为一旦找到匹配就立即输出该行无需加载整个文件到内存。4.2 sed流编辑器sed用于对输入流进行基本的文本转换。# 将文件中的 “foo” 替换为 “bar”只替换每行第一个 sed ‘s/foo/bar/’ file.txt # 替换所有全局 sed ‘s/foo/bar/g’ file.txt # 删除空白行 sed ‘/^$/d’ file.txt # 删除第 10 行 sed ‘10d’ file.txt # 在原文件上直接修改危险建议先测试 sed -i.bak ‘s/old/new/g’ config.conf原理剖析sed按行读取输入将其放入“模式空间”然后按脚本如s/.../.../执行编辑命令最后输出模式空间的内容。它是一个“流”处理器适合自动化、批量修改。4.3 awk模式扫描与处理语言awk不仅仅是一个命令更是一门编程语言擅长处理基于列的文本数据。# 打印 /etc/passwd 文件的第一列用户名和第三列UID awk -F: ‘{print $1, $3}’ /etc/passwd # 打印文件行数 awk ‘END {print NR}’ file.txt # 计算第二列的总和 awk ‘{sum $2} END {print sum}’ data.txt # 条件处理打印 UID 大于 1000 的用户 awk -F: ‘$3 1000 {print $1}’ /etc/passwd原理剖析-F:指定输入字段分隔符为冒号。$1,$2... 代表当前行的第 1、2... 个字段。NR是内置变量代表已读的记录数行号。awk程序结构通常为模式 { 动作 }。如果模式省略则对所有行执行动作如果动作省略则默认打印整行。BEGIN和END是特殊模式分别在处理任何行之前和之后执行。组合示例统计访问日志中每个 IP 的访问次数并按次数降序排列。awk ‘{print $1}’ access.log | sort | uniq -c | sort -rnawk ‘{print $1}’提取第一列假设是 IP。sort排序为uniq -c做准备。uniq -c去重并计数。sort -rn按数字-n逆序-r排序。5. 进程管理与监控理解进程树与信号Linux 是一个多任务系统理解进程是管理系统的核心。5.1 查看进程ps与top# 显示当前终端下的进程 ps # 显示所有进程的详细信息BSD 风格 ps aux # 显示进程树 ps auxf # 或者使用 pstree pstree -p # 动态监控进程类似任务管理器 top # 更友好的 top需要安装 htop原理剖析ps aux输出解析USER: 进程所有者。PID: 进程 ID。%CPU,%MEM: CPU 和内存占用率。VSZ: 虚拟内存大小。RSS: 实际使用的物理内存大小。TTY: 进程关联的终端。STAT: 进程状态S-睡眠R-运行Z-僵尸等。START: 启动时间。COMMAND: 启动命令。top/htop动态地从/proc文件系统如/proc/[pid]/stat中读取进程信息并刷新显示。%CPU是自上次刷新以来的占用率。5.2 进程间关系与pstree每个进程除了 init/PID 1都有一个父进程PPID。pstree以树状图显示这种关系这对于理解守护进程、子进程崩溃后谁负责回收僵尸进程非常有帮助。5.3 发送信号kill与进程终止# 优雅地终止进程发送 SIGTERM 信号允许进程清理 kill PID # 强制杀死进程发送 SIGKILL 信号不可捕获立即终止 kill -9 PID # 根据进程名杀死进程 pkill process_name # 杀死整个进程组 kill -- -PGID原理剖析kill命令的本质是向进程发送信号。SIGTERM (15)是默认信号请求进程终止。SIGKILL (9)则强制立即终止。进程可以捕获和处理大部分信号如SIGTERM进行资源清理后再退出。但SIGKILL和SIGSTOP不能被捕获是管理员最后的强制手段。使用kill -9可能导致数据丢失或状态不一致应优先尝试kill无参数或kill -15。5.4 查找文件被谁占用lsof# 查看谁在占用 80 端口 lsof -i :80 # 查看某个文件被哪些进程打开 lsof /path/to/file # 查看某个进程打开的所有文件 lsof -p PID原理剖析lsof(List Open Files) 列出系统当前打开的文件。在 Linux 中“一切皆文件”包括网络连接、管道、设备等。因此lsof是排查“文件被占用无法删除”或“端口被占用”问题的利器。6. 网络工具从配置到连通性网络排查是运维的日常掌握几个核心工具能快速定位问题。6.1 查看与配置网络接口# 传统命令逐渐被 ip 取代 ifconfig # 现代推荐命令功能更强大 ip addr show # 简写 ip a # 查看路由表 ip route show # 简写 ip r原理剖析ip命令来自iproute2软件包是 Linux 内核网络子系统功能的统一接口。ifconfig来自古老的net-tools对新特性如 VLAN、多播支持有限。建议新系统学习使用ip命令。6.2 测试连通性ping与traceroute# 测试到目标主机的连通性和延迟 ping -c 4 baidu.com # 追踪数据包经过的路由路径 traceroute baidu.com # 或使用 tracepath tracepath baidu.com原理剖析ping使用 ICMP Echo Request/Reply 报文。-c指定发送次数。高延迟或丢包可能意味着网络拥堵或故障。traceroute通过发送 TTL 递增的 UDP 包或 ICMP 包利用中间路由器返回的“TTL 超时”消息来构建路径。防火墙可能会屏蔽相关报文。6.3 检查端口与连接netstat与ss# 查看所有监听端口 netstat -tlnp # 查看所有 TCP 连接 netstat -tan # 现代替代品速度更快 ss -tlnp ss -tan原理剖析netstat从/proc/net/tcp,/proc/net/udp等文件读取信息。当连接数巨大时netstat可能较慢。ss(socket statistics) 直接从内核空间获取信息速度极快输出格式也更易读。-tTCP,-uUDP,-l监听,-n数字形式不解析服务名-p显示进程信息。6.4 下载与 API 测试curl与wget# 获取网页内容 curl https://example.com # 保存到文件 curl -o page.html https://example.com # 发送 POST 请求携带 JSON 数据 curl -X POST -H “Content-Type: application/json” -d ‘{“key”:”value”}’ https://api.example.com/endpoint # 跟随重定向 curl -L https://example.com # 使用 wget 递归下载网站谨慎使用 wget -r -l 2 https://example.com原理剖析curl是一个强大的命令行传输工具支持数十种协议HTTP/HTTPS/FTP/SCP等常用于测试 API、下载文件。wget则更专注于下载支持递归和断点续传。curl默认将输出打印到标准输出而wget默认下载到文件。7. 输入输出重定向与管道Shell 的粘合剂这是 Shell 强大功能的基石理解了它们才能真正组合命令。command file将标准输出重定向到文件覆盖。command file将标准输出重定向到文件追加。command file将文件内容作为标准输入。command 2 file将标准错误重定向到文件。command file将标准输出和标准错误都重定向到文件。command1 | command2将command1的标准输出作为command2的标准输入。原理剖析 每个进程启动时都会打开三个标准文件描述符0 标准输入stdin1 标准输出stdout2 标准错误stderr。重定向操作就是 Shell 在启动命令前修改了这些文件描述符指向的目标文件、设备或其他进程的输入。管道|则创建了一个匿名管道将前一个进程的 stdout 连接到后一个进程的 stdin。复杂示例运行一个脚本将正常日志和错误日志分别记录到不同文件同时屏幕上只显示错误。./my_script.sh normal.log 2 error.log | tee -a error.log # 或者更常见的丢弃所有输出 ./my_script.sh /dev/null 218. 用户、权限与 sudo安全的基础8.1 理解权限数字表示rwx权限可以用一个八进制数字表示r 4w 2x 1因此rwxr-xr--可以计算为属主rwx 421 7属组r-x 401 5其他r-- 400 4 所以权限数字是754。chmod 755 script.sh # 设置为 rwxr-xr-x chmod 644 config.conf # 设置为 rw-r--r--8.2 特殊权限位SUID, SGID, Sticky BitSUID (Set User ID): 当文件被设置 SUID如4755chmod us任何用户执行此文件时都将以文件所有者的身份运行。典型例子/usr/bin/passwd。SGID (Set Group ID): 对目录设置 SGID如2770chmod gs在该目录下创建的新文件将继承目录的属组而非创建者的主要组。常用于协作目录。Sticky Bit: 对目录设置粘滞位如1777chmod t如/tmp即使目录权限是 777用户也只能删除自己创建的文件不能删除他人的文件。8.3 sudo 机制sudo允许授权用户以其他用户默认为 root的身份执行命令。其配置在/etc/sudoers文件中永远不要直接用文本编辑器修改此文件应使用visudo命令它会进行语法检查。# 以 root 身份执行命令 sudo systemctl restart nginx # 编辑 sudoers 文件 sudo visudo原理剖析sudo是一个 setuid 程序-rwsr-xr-x。当用户执行sudo时进程暂时获得 root 权限然后根据/etc/sudoers的规则验证该用户是否有权执行该命令并可能要求输入用户自己的密码。验证通过后sudo会 fork 一个子进程在该子进程中切换为目标用户如 root然后执行命令。9. 常见问题排查思路与命令组合掌握了原理和单个命令后如何组合它们来解决问题以下是一些经典场景场景一服务器 CPU 负载高如何定位是哪个进程top或htop直观查看 CPU 占用排序。ps aux --sort-%cpu | head -10列出 CPU 占用最高的前 10 个进程。如果某个进程异常使用strace -p PID跟踪其系统调用或perf top进行性能剖析。场景二磁盘空间不足如何找出大文件# 查看磁盘总体使用情况 df -h # 找出当前目录下最大的10个文件/目录 du -sh * | sort -rh | head -10 # 更精确地查找整个系统的大文件可能需要sudo sudo find / -type f -size 100M -exec ls -lh {} \; 2/dev/null | sort -k5 -rh | head -20场景三服务端口如 8080被占用如何找到并结束进程# 方法1: 使用 lsof sudo lsof -i :8080 # 方法2: 使用 netstat 或 ss sudo netstat -tlnp | grep :8080 sudo ss -tlnp | grep :8080 # 找到 PID 后用 kill 终止 kill PID场景四分析 Nginx 访问日志统计状态码分布和请求最多的 IP。# 统计不同 HTTP 状态码的数量 awk ‘{print $9}’ access.log | sort | uniq -c | sort -rn # 统计请求最多的前10个IP awk ‘{print $1}’ access.log | sort | uniq -c | sort -rn | head -10 # 查看 404 错误的请求路径 grep “ 404 “ access.log | awk ‘{print $7}’ | sort | uniq -c | sort -rn场景五实时监控日志文件的新增内容。tail -f /var/log/application.log # 同时高亮显示错误关键词 tail -f /var/log/application.log | grep –color -E “ERROR|WARN|FAIL”10. 总结与最佳实践Linux 命令的学习是一个“先知其然再知其所以然”的过程。本文从使用出发深入到/proc文件系统、权限模型、进程信号、文件描述符等原理层面希望能帮你构建起系统的理解框架。最佳实践建议理解原理而非死记硬背明白grep如何工作你就能理解为什么它不适合处理超大文件应使用awk或sed按需处理。明白kill是发送信号你就能在程序需要优雅退出时避免使用kill -9。善用手册和帮助遇到不熟悉的命令第一时间man command或command –help。man手册的“SEE ALSO”部分能帮你发现相关工具。命令组合前先测试在将一系列命令通过管道连接执行前先单独运行每个部分确保其输出符合预期。对于危险操作如rm、chmod -R可以先使用echo或ls预览将要影响的目标。脚本化重复工作如果某个复杂的命令组合需要频繁使用将其写入一个 Shell 脚本并添加清晰的注释和参数检查。注意命令的现代替代品了解ip之于ifconfigss之于netstat并逐渐转向使用更现代的工具。安全第一谨慎使用sudo理解chmod 777的风险不在脚本中硬编码密码对来自外部的输入进行验证。命令行的力量在于组合与自动化。从查看系统状态的几个简单命令开始到用awk和sed分析日志再到编写脚本监控服务、自动备份每一步都建立在对底层原理的扎实理解之上。建议你准备一个实验环境将文中的命令逐一运行、拆解、组合遇到问题时尝试用今天学到的原理去分析和搜索这才是掌握 Linux 核心命令的真正路径。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度