Linux 核心知识与常用命令指南

2026/07/017 分钟阅读2,295

这指南专为“有一定基础、想快速掌握实用 Linux 技能”的开发者设计。我们不堆砌冷门命令,只聚焦于日常开发、运维、Debug 中 80% 场景下会用到的 20% 核心知识与命令


一、 核心心智模型 (Mental Models)

在学习命令前,记住 Linux 的三个核心设计哲学:

  1. 一切皆文件 (Everything is a file):不仅是文本和图片,目录、硬件设备(网卡、硬盘)、进程(/proc)在 Linux 眼中都是文件。这意味着你可以用同一套命令(如 cat, echo, grep)去操作几乎所有东西。
  2. 小而美的程序 (Do one thing and do it well):Linux 命令通常只做一件事,但通过 管道 (Pipe |) 可以将它们无限组合。
  3. 数据流 (Data Streams)
    • 标准输入 (stdin, 0):默认是键盘。
    • 标准输出 (stdout, 1):默认是屏幕。
    • 标准错误 (stderr, 2):默认是屏幕。

二、 核心命令速查表 (The “Must-Have” Commands)

1. 文件与目录操作(生存基本功)

命令核心用法实用场景 / 技巧
lsls -lah列出所有文件(含隐藏文件 . 开头),显示详细大小(human-readable)。
cdcd -快速返回上一次所在的目录。cd ~ 回到家目录。
pwdpwd显示当前绝对路径。
mkdirmkdir -p a/b/c递归创建多级目录,不用一层层建。
rmrm -rf <path>递归且强制删除。注意: 永远不要运行 rm -rf /,操作重要目录时多加小心!
cpcp -r src/ dest/递归复制文件夹。
mvmv old.txt new.txt移动或重命名文件/目录。
lnln -s target link_name创建软链接(快捷方式),在配置环境或管理版本时极常用。

2. 文本查看与处理(读日志/改配置必备)

在服务器上,80% 的工作是在与日志和配置文件打交道。

  • cat:适合看小文件。看大日志绝对不要用 cat,会刷屏甚至撑爆终端。
  • less:看大文件/日志的神器。支持翻页、搜索(输入 /关键词),按 q 退出。不会一次性加载整文件,省内存。
  • tail
    • tail -n 100 app.log:看最后 100 行。
    • tail -f app.log实时滚动查看新追加的日志(按 Ctrl + C 退出),排查线上问题最常用。
  • grep:文本过滤。
    • grep "ERROR" app.log:找出含有 ERROR 的行。
    • grep -rn "TODO" ./:递归(r)查找当前目录下所有文件中包含 “TODO” 的行并显示行号(n)。
  • 管道符 | 与重定向 > / >>
    • cat info.log | grep "UID:10086":把前面命令的输出作为后面命令的输入。
    • echo "env=prod" > .env:覆盖写入文件。
    • echo "new_log" >> app.log:追加写入文件末尾。

3. 进程与资源监控(服务器卡了怎么办?)

当系统变慢或程序无响应时,用以下命令排查:

  • top / htop:系统资源监控器。能看到 CPU、内存占用以及哪些进程吃资源最多。建议安装 htop(交互界面更友好,带颜色)。
  • ps:查看进程快照。
    • ps -ef | grep python:找出系统里所有正在运行的 Python 进程。
  • kill:结束进程。
    • kill -9 <PID>:强制杀死指定进程号(PID)的进程。
  • df -h:查看磁盘空间占用情况(避免磁盘满导致服务挂掉)。
  • du -sh *:查看当前目录下每个文件/文件夹占用的磁盘空间,方便揪出“空间杀手”。

4. 网络与连通性排查

  • ping <ip/domain>:测试网络连通性。
  • curl -i https://api.github.com:在命令行发 HTTP 请求,i 可以显示 Response Header。排查 API 连通性极好用。
  • netstat / ss:查看端口占用。
    • ss -ntlpnetstat -ntlp:查看当前系统哪些端口在监听(Listen),以及是哪个进程在占用(需 root 权限)。
    • 比如排查“3000端口被占用”:ss -ntlp | grep 3000

5. 用户、权限与安全

Linux 是多用户系统,权限控制非常严格。

  • chmod:修改文件权限。
    • chmod +x run.sh:给脚本赋予执行权限。
    • chmod 600 id_rsa:设置私钥文件仅自己可读写(SSH 密钥安全要求)。
  • chown:修改文件所属用户和组。
    • sudo chown -R nginx:nginx /var/www:把网页目录的所有者改成 nginx 用户。
  • sudo:以超级用户(root)权限执行命令。
  • 用户与组管理(系统管理员必备)
    • useradd / adduser:创建新用户。例如 sudo useradd -m tomm 表示同时创建家目录 /home/tom)。
    • passwd:修改用户密码。例如 sudo passwd tom 为 tom 设置或重置密码。
    • usermod:修改用户属性。例如 sudo usermod -aG sudo tom 将用户 tom 追加(a)到 sudo 管理员组(G)。
    • userdel:删除用户。例如 sudo userdel -r tomr 表示同时删除其家目录)。
    • groupadd:创建用户组。例如 sudo groupadd dev 创建一个名为 dev 的开发组。
    • groupdel:删除用户组。例如 sudo groupdel dev
    [!CAUTION] 关键账号安全防范 系统关键账号(如 root、系统默认的 admin 等)是系统的控制核心,绝不要随意删除、禁用或剥夺其权限。在实际工作中,应避免直接使用 root 账号日常操作,而是创建普通用户,并通过 sudo 临时获取特权,以此来提供操作审计与安全屏障。

三、 新手必须跨过的三道坎 (The Three Hurdles for Beginners)

只懂命令还不够,在真正干活时,你一定会遇到这三个核心概念。掌握了它们,你才算真正“入门”:

1. 软件安装 (Package Management)

在 Linux 上装软件不像 Windows 双击 exe,而是通过命令行包管理器。最常用的两个主流派系: * Debian/Ubuntu 派系 (使用 apt): * 更新软件源列表:sudo apt update(装软件前习惯先运行这个) * 安装软件(例如安装 nginx):sudo apt install nginx * 卸载软件:sudo apt remove nginx * CentOS/RedHat 派系 (使用 yumdnf): * 安装软件:sudo yum install nginx

2. 环境变量 (Environment Variables) —— 为什么提示 “Command not found”?

当你运行一个命令(比如 nodepython),系统怎么知道去哪里找它?答案是 PATH 环境变量。 * 查看当前 PATHecho $PATH(你会看到一堆由冒号 : 隔开的路径,系统会依次去这些路径下寻找你输入的命令)。 * 临时添加环境变量(关闭终端就失效): bash export PATH=$PATH:/usr/local/go/bin * 永久添加环境变量: 需要将上述 export 语句写入你的 Shell 配置文件中(通常是家目录下的 ~/.bashrc~/.zshrc),然后运行 source ~/.bashrc 使其立即生效。

3. Vim 极简求生指南 (Vim Survival Guide)

在没有图形界面的 Linux 服务器上,Vim 是最常用的文本编辑器。很多新手被卡在 Vim 里不知道怎么出来。记住这四个状态和按键即可:

graph TD
    A["刚进入 Vim (Normal 模式)"] -->|按 'i' 键| B["编辑文件 (Insert 模式)"]
    B -->|按 'Esc' 键| A
    A -->|输入 ':wq' 并回车| C["保存并退出"]
    A -->|输入 ':q!' 并回车| D["不保存强制退出"]
    A -->|输入 '/关键词'| E["向下搜索文本"]
  • 进入编辑:按 i 键(底部会出现 - INSERT --),此时可以打字。
  • 返回正常模式:无论你在做什么,按 Esc 键。
  • 退出 Vim(必须在按了 Esc 之后输入):
    • :wq : 保存并退出。
    • :q! : 不保存,强制退出。
  • 搜索文本:按 Esc,然后输入 / 加上你要找的内容(如 /port),按 Enter 确认,按 n 键找下一个匹配项。

💡 附:Shell 的两个提效神技

  • Tab 键双击最伟大的功能! 输入命令或文件名时,按一下或两下 Tab 键,系统会自动帮你补全路径或命令,避免手打出错。
  • Ctrl + R 历史搜索:按下后直接输入你以前运行过的命令的部分字符,它会自动帮你把那条长命令找出来,按回车直接运行。

四、 实战高频场景工作流 (Real-World Scenarios)

场景 A:服务器磁盘满了,如何排查并清理?

  1. 运行 df -h 定位是哪个挂载分区满了。
  2. 进入该分区,运行 du -sh * | sort -hr | head -n 10,找出当前目录下占用空间最大的前10个文件或文件夹。
  3. 重复上述步骤进入子目录,定位到具体的无用大日志文件。
  4. 清空日志(不要直接 rm 正在被程序写入的日志,否则空间可能无法释放): cat /dev/null > huge_app.log (将其截断为0字节)。

场景 B:服务启动失败,提示“Address already in use”

  1. 找出占用该端口(假设是 8080)的进程 PID: sudo ss -lptn 'sport = :8080' 或者 sudo netstat -ntlp | grep 8080
  2. 确认进程无误后,将其杀掉: sudo kill <PID> (如果杀不掉,用 sudo kill -9 <PID>)
  3. 重新启动你的服务。

场景 C:查找最近 24 小时内修改过的日志文件

  1. 使用 find 命令: find /var/log -mtime -1 -name "*.log"

五、 进阶自学路线与技巧

  1. 善用 man-help
    • 想知道某个命令怎么用?输入 man <command> 查看官方手册。
    • 快速查找参数:<command> --help(如 mkdir --help)。
  2. 理解常见的配置文件路径
    • /etc/:系统和绝大多数服务的配置文件存放地(如 /etc/nginx/nginx.conf)。
    • ~/.bashrc~/.zshrc:当前用户的 Shell 配置文件,用来定制别名(Alias)和环境变量。
  3. 在本地搭建练习环境
    • 绝不要在生产环境乱试危险命令。
    • 推荐方式:在本地使用 Docker 运行一个轻量级的 Ubuntu 或 Alpine 容器,随时玩坏,随时重建: docker run -it --name learn-linux ubuntu:latest /bin/bash