4536 字
23 分钟
理解 Linux:它不是一堆命令,而是一套操作系统思想

很多人第一次接触 Linux,会觉得它像一堆命令、目录和配置文件的集合:cd、ls、/etc、systemctl、apt、chmod……这些东西看起来零散又陌生。

但如果只把 Linux 当成“需要背命令的系统”,就很难真正理解它。更好的方式是把 Linux 看成一个由几个核心思想组织起来的操作系统。


一、Linux 到底是什么?#

严格来说,Linux 指的是操作系统内核。

内核是操作系统最核心的部分,负责管理:

  • CPU
  • 内存
  • 磁盘
  • 网络
  • 进程
  • 文件系统
  • 硬件设备

但我们平时说的 Ubuntu、Debian、CentOS、Fedora、Arch Linux,并不只是 Linux 内核,而是基于 Linux 内核做出来的完整操作系统,通常叫做 Linux 发行版。

可以这样理解:

Linux 内核负责底层能力,发行版负责把内核、工具、软件包管理器、桌面环境、配置方式组合成一个可用系统。

所以,Ubuntu 不是 Linux 本身,而是一个基于 Linux 内核的完整系统。

不同发行版的底层思想类似,但它们的软件管理方式、默认配置、更新节奏和使用体验会有所不同。


二、Linux 的核心思想:一切皆文件#

理解 Linux,第一个重要观念是:

一切皆文件。

在 Windows 里,我们习惯看到 C 盘、D 盘、设备管理器、控制面板、注册表等概念。

但在 Linux 中,很多东西都被抽象成文件或目录。

例如:

  • 普通文档是文件;
  • 硬盘、U 盘、终端设备也可以表现为文件;
  • 系统配置通常是文本文件;
  • 进程信息可以通过文件系统查看;
  • 内核状态也可以通过虚拟文件读取。

这就是为什么 Linux 里有很多重要目录,比如:

Terminal window
/etc
/home
/var
/usr
/bin
/proc
/dev

这些目录不是随便命名的,而是 Linux 系统结构的一部分。


三、Linux 文件系统:从根目录开始理解#

Linux 没有 Windows 那种明显的 C 盘、D 盘概念。

它的整个文件系统从一个根目录 / 开始。

Terminal window
/

所有文件、目录、磁盘、设备,都挂载在这个根目录下面。

你可以把 / 理解成 Linux 世界的起点。

几个常见目录可以这样理解:

1. /home#

普通用户的个人目录。

比如用户 nemo 的家目录通常是:

Terminal window
/home/nemo

你自己的文档、下载、配置文件,很多都会放在这里。


2. /etc#

系统配置文件目录。

很多服务和系统组件的配置都放在这里。例如:

Terminal window
/etc/ssh
/etc/nginx
/etc/systemd

如果你要改服务器配置,经常会接触 /etc。


3. /var#

经常变化的数据目录。

例如:

  • 日志文件
  • 缓存文件
  • 网站数据
  • 数据库文件
  • 邮件队列

常见路径有:

Terminal window
/var/log
/var/www
/var/lib

4. /usr#

系统软件、库文件、共享资源所在的位置。

很多程序和命令都放在这里,例如:

Terminal window
/usr/bin
/usr/lib
/usr/share

5. /bin 和 /usr/bin#

常用命令程序所在的位置。

比如你输入:

Terminal window
ls
cp
mv
cat
grep

这些命令本质上也是一个个可执行程序。


6. /dev#

设备文件目录。

Linux 会把很多硬件设备抽象成文件,比如:

Terminal window
/dev/sda
/dev/null
/dev/random

这体现了“一切皆文件”的思想。


7. /proc#

虚拟文件系统,用来查看系统运行状态。

比如:

Terminal window
/proc/cpuinfo
/proc/meminfo

可以查看 CPU、内存、进程等信息。

所以,Linux 的目录结构本质上是一张系统地图。你越熟悉这些目录,就越能理解系统是怎么组织起来的。


四、Shell:人与 Linux 对话的方式#

Linux 可以有图形界面,但它真正强大的地方在命令行。

命令行不是“落后”,而是一种高效、精确、可自动化的交互方式。

Shell 是用户和 Linux 系统之间的解释器。你输入命令,Shell 负责解释并调用对应程序。

常见 Shell 有:

Terminal window
bash
zsh
fish

最常见的是 bash。

例如:

Terminal window
ls

查看当前目录内容。

Terminal window
cd /etc

进入 /etc 目录。

Terminal window
pwd

查看当前所在目录。

Terminal window
cat file.txt

查看文件内容。

Terminal window
grep "error" log.txt

在文件中搜索包含 error 的行。


五、Linux 命令为什么强大?#

Linux 命令的强大之处,不在于单个命令多复杂,而在于它们可以组合。

例如:

Terminal window
cat log.txt | grep "error" | sort | uniq

这条命令做了几件事:

  1. cat log.txt 读取日志文件;
  2. grep "error" 筛选包含 error 的行;
  3. sort 对结果排序;
  4. uniq 去除重复行。

这里的 | 叫做管道,意思是把前一个命令的输出交给后一个命令处理。

这体现了 Linux 的另一个重要思想:

每个工具只做一件事,但要做好;多个工具可以组合完成复杂任务。

所以,Linux 不是靠一个庞大的软件完成所有事情,而是靠许多小工具互相配合。


六、权限系统:Linux 为什么重视安全#

Linux 是一个多用户系统。

即使你只是一个人在用电脑,系统内部也会区分:

  • 普通用户
  • 管理员用户
  • 系统服务用户
  • 程序运行用户

Linux 的权限主要包括三类:

Terminal window
r 读
w 写
x 执行

权限对象也分三类:

Terminal window
user 所有者
group 用户组
others 其他人

使用下面的命令可以查看文件权限:

Terminal window
ls -l

你可能会看到类似结果:

Terminal window
-rw-r--r-- 1 nemo nemo 1024 Jun 3 notes.txt

其中:

Terminal window
-rw-r--r--

可以拆开看:

  • 第一个 - 表示这是普通文件;
  • rw- 表示文件所有者可以读写;
  • r-- 表示同组用户可以读;
  • r-- 表示其他人可以读。

如果是目录,开头通常是 d:

Terminal window
drwxr-xr-x

这里的 d 表示 directory,也就是目录。


七、sudo:临时获得管理员权限#

Linux 中,普通用户不能随便修改系统关键文件。

如果需要管理员权限,通常使用:

Terminal window
sudo

例如:

Terminal window
sudo apt update

表示以管理员身份更新软件源信息。

Terminal window
sudo systemctl restart nginx

表示以管理员身份重启 Nginx 服务。

sudo 的意思不是“无脑强制执行”,而是:

我知道这个操作需要更高权限,我确认要以管理员身份执行。

理解权限非常重要,因为很多 Linux 问题本质上都是权限问题。

比如:

  • 文件不能修改;
  • 脚本不能执行;
  • 服务不能启动;
  • 端口不能监听;
  • 配置文件改了但不生效。

这些问题背后经常和权限有关。


八、软件安装:包管理器是 Linux 的核心体验#

在 Windows 上,安装软件通常是下载安装包,然后一路下一步。

在 Linux 上,更常见的方式是使用包管理器。

不同发行版的包管理器不同。

Ubuntu / Debian 常用:

Terminal window
apt

CentOS / RHEL / Fedora 常用:

Terminal window
dnf

Arch Linux 常用:

Terminal window
pacman

以 Ubuntu 为例:

Terminal window
sudo apt update

更新软件源信息。

Terminal window
sudo apt install nginx

安装 Nginx。

Terminal window
sudo apt remove nginx

卸载 Nginx。

Terminal window
sudo apt upgrade

升级系统中已安装的软件包。

包管理器解决的不只是“下载软件”,还包括:

  • 软件安装
  • 软件卸载
  • 依赖关系
  • 版本管理
  • 安全更新
  • 软件源管理

理解包管理器,就理解了 Linux 软件生态的一大半。


九、进程:Linux 如何运行程序#

程序运行起来以后,就变成了进程。

Linux 是多任务系统,可以同时运行很多进程。

查看进程常用:

Terminal window
ps aux

或者:

Terminal window
top

如果安装了 htop,也可以使用:

Terminal window
htop

它会以更直观的方式显示进程状态。

每个进程都有一个编号,叫 PID。

如果某个进程卡住,可以结束它:

Terminal window
kill PID

例如:

Terminal window
kill 1234

如果普通结束无效,可以使用:

Terminal window
kill -9 1234

不过 kill -9 比较强硬,相当于强制终止,一般不应作为首选。

理解进程有助于你判断:

  • 某个程序有没有运行;
  • 哪个程序占用了大量 CPU;
  • 哪个程序占用了大量内存;
  • 为什么端口被占用;
  • 某个服务是不是卡死了。

十、服务:服务器世界里的常驻程序#

Linux 经常用于服务器。

服务器上有很多长期运行的程序,比如:

  • SSH
  • Nginx
  • Apache
  • MySQL
  • PostgreSQL
  • Redis
  • Docker
  • 防火墙

这些长期运行的程序通常叫做服务。

在现代 Linux 中,常用 systemctl 管理服务。

查看服务状态:

Terminal window
systemctl status nginx

启动服务:

Terminal window
sudo systemctl start nginx

停止服务:

Terminal window
sudo systemctl stop nginx

重启服务:

Terminal window
sudo systemctl restart nginx

设置开机自启:

Terminal window
sudo systemctl enable nginx

取消开机自启:

Terminal window
sudo systemctl disable nginx

如果你把 Linux 用作服务器,那么 systemctl 是必须熟悉的工具。


十一、日志:Linux 出问题时先看日志#

Linux 很多问题不会像 Windows 那样弹窗告诉你,而是写进日志。

学会看日志,是从“会用 Linux”到“会排查 Linux”的关键一步。

常见日志目录是:

Terminal window
/var/log

例如:

Terminal window
/var/log/syslog
/var/log/auth.log
/var/log/nginx/access.log
/var/log/nginx/error.log

使用 systemd 的系统还可以用:

Terminal window
journalctl

查看系统日志。

查看最近的重要错误:

Terminal window
journalctl -xe

查看某个服务的日志:

Terminal window
journalctl -u nginx

实时查看某个服务的日志:

Terminal window
journalctl -u nginx -f

Linux 排错的基本思路可以概括为:

看状态,看日志,看配置,看权限,看网络。

例如一个网站打不开,你可以依次检查:

  1. Nginx 是否在运行;
  2. Nginx 日志有没有报错;
  3. 配置文件是否正确;
  4. 网站目录权限是否正确;
  5. 端口是否监听;
  6. 防火墙是否放行;
  7. 云服务器安全组是否开放端口。

十二、网络:Linux 服务器绕不开的部分#

Linux 常用于服务器,所以网络知识很重要。

查看 IP 地址:

Terminal window
ip addr

查看路由:

Terminal window
ip route

测试网络连通:

Terminal window
ping 8.8.8.8

查看端口监听:

Terminal window
ss -tulnp

如果想看系统有哪些服务正在监听端口,可以用:

Terminal window
sudo ss -tulnp

其中:

  • t 表示 TCP;
  • u 表示 UDP;
  • l 表示监听状态;
  • n 表示不解析域名和服务名;
  • p 表示显示进程信息。

防火墙方面,Ubuntu 常见的是 ufw。

查看防火墙状态:

Terminal window
sudo ufw status

开放 SSH 端口:

Terminal window
sudo ufw allow 22

开放 HTTP 端口:

Terminal window
sudo ufw allow 80

开放 HTTPS 端口:

Terminal window
sudo ufw allow 443

启用防火墙:

Terminal window
sudo ufw enable

网络问题通常可以按这个顺序排查:

  1. 本机有没有 IP;
  2. 能不能访问网关;
  3. 能不能访问公网 IP;
  4. DNS 是否正常;
  5. 服务有没有监听端口;
  6. 防火墙有没有拦截;
  7. 云服务器安全组有没有放行。

十三、SSH:远程管理 Linux 的入口#

很多人接触 Linux,是从远程连接服务器开始的。

最常见的方式是 SSH。

命令格式一般是:

Terminal window
ssh 用户名@服务器IP

例如:

Terminal window

或者:

Terminal window

SSH 的作用是让你在本地电脑上远程登录服务器,然后像在服务器本机一样输入命令。

如果你买了一台云服务器,通常第一件事就是用 SSH 登录它。

SSH 不只是登录工具,还可以传文件。

例如使用 scp:

Terminal window
scp file.txt [email protected]:/home/nemo/

意思是把本地的 file.txt 复制到远程服务器的 /home/nemo/ 目录。


十四、Linux 的配置文件文化#

Linux 很多配置都是文本文件。

例如:

Terminal window
/etc/ssh/sshd_config
/etc/nginx/nginx.conf
/etc/fstab
/etc/hosts

这和 Windows 的图形化设置不同。

Linux 更强调:

配置是透明的、可编辑的、可备份的、可自动化的。

你可以用文本编辑器修改配置文件。

常见编辑器有:

Terminal window
nano
vim

新手可以先用 nano:

Terminal window
sudo nano /etc/ssh/sshd_config

修改配置后,很多服务需要重启才会生效:

Terminal window
sudo systemctl restart ssh

或者:

Terminal window
sudo systemctl restart nginx

所以 Linux 的典型配置流程是:

Terminal window
修改配置文件 → 检查配置语法 → 重启服务 → 查看状态和日志

十五、Linux 学习顺序#

初学 Linux 不建议一开始追求“命令大全”。

更好的学习顺序是:

第一阶段:理解目录结构#

重点理解:

Terminal window
/
/home
/etc
/var
/usr
/dev
/proc

你要知道常见文件大概放在哪里。


第二阶段:掌握基本命令#

先学这些:

Terminal window
pwd
ls
cd
cp
mv
rm
mkdir
cat
less
head
tail
grep
find

这些命令解决的是最基础的文件和目录操作问题。


第三阶段:理解权限#

重点掌握:

Terminal window
chmod
chown
sudo
ls -l

你需要理解什么是读、写、执行权限。


第四阶段:学会安装软件#

Ubuntu 上重点掌握:

Terminal window
sudo apt update
sudo apt install
sudo apt remove
sudo apt upgrade

第五阶段:理解进程和服务#

重点掌握:

Terminal window
ps
top
kill
systemctl
journalctl

这部分对服务器管理尤其重要。


第六阶段:理解网络#

重点掌握:

Terminal window
ip addr
ip route
ping
curl
ss
ssh
ufw

如果你要管理服务器,网络部分一定绕不开。


十六、Linux 常见命令速查#

目录操作#

Terminal window
pwd # 查看当前目录
ls # 查看目录内容
ls -l # 详细显示
ls -a # 显示隐藏文件
cd /etc # 进入 /etc 目录
cd ~ # 回到家目录
cd .. # 返回上一级目录
mkdir test # 创建目录
rmdir test # 删除空目录

文件操作#

Terminal window
touch a.txt # 创建空文件
cp a.txt b.txt # 复制文件
mv a.txt b.txt # 移动或重命名文件
rm a.txt # 删除文件
cat a.txt # 查看文件内容
less a.txt # 分页查看文件
head a.txt # 查看文件开头
tail a.txt # 查看文件结尾
tail -f a.txt # 实时查看文件新增内容

搜索与筛选#

Terminal window
grep "error" log.txt # 搜索文本
find / -name "*.conf" # 按文件名查找
which nginx # 查看命令位置

权限相关#

Terminal window
ls -l # 查看权限
chmod +x script.sh # 添加执行权限
chmod 644 file.txt # 设置文件权限
chmod 755 script.sh # 设置脚本或目录权限
sudo command # 以管理员权限执行命令

软件管理#

Terminal window
sudo apt update
sudo apt install nginx
sudo apt remove nginx
sudo apt upgrade

服务管理#

Terminal window
systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl enable nginx
sudo systemctl disable nginx

网络相关#

Terminal window
ip addr
ip route
ping 8.8.8.8
curl example.com
sudo ss -tulnp
sudo ufw status

十七、理解 Linux 的关键主线#

Linux 看起来复杂,是因为它涉及的东西很多。

但从理解角度看,可以抓住六条主线:

文件
权限
进程
服务
网络
日志

这六条主线基本覆盖了日常使用和服务器运维的大部分场景。

文件#

Linux 用文件系统组织一切。

你要知道文件在哪里、配置在哪里、日志在哪里。

权限#

Linux 用权限控制安全。

你要知道谁能读、谁能写、谁能执行。

进程#

Linux 中运行的程序都是进程。

你要知道程序是否在运行、占用了多少资源、如何结束它。

服务#

服务器上的长期程序通常以服务形式运行。

你要知道如何启动、停止、重启和设置开机自启。

网络#

Linux 服务器通常需要对外提供服务。

你要知道 IP、端口、路由、防火墙和 SSH。

日志#

Linux 出问题时,答案往往在日志里。

你要学会看 /var/log 和 journalctl。


十八、Linux 和 Windows 的思维差异#

Windows 更强调图形界面和软件安装包。

Linux 更强调命令行、文本配置和组合工具。

可以简单比较一下:

方面WindowsLinux
磁盘结构C 盘、D 盘从 / 根目录开始
软件安装下载安装包包管理器安装
系统配置图形界面、注册表文本配置文件
权限管理用户权限 + UAC用户、组、读写执行权限
服务管理服务管理器systemctl
排错方式弹窗、事件查看器日志、状态、命令
自动化PowerShell、批处理Shell 脚本、管道

这不是谁高级谁低级的问题,而是设计哲学不同。

Linux 的优势在于:

  • 稳定;
  • 透明;
  • 可控;
  • 适合服务器;
  • 适合自动化;
  • 适合开发和运维;
  • 资源占用相对灵活。

十九、学习 Linux 不要陷入的误区#

误区一:一开始就背命令大全#

命令很多,背不完。

更重要的是理解命令解决什么问题。

例如:

Terminal window
ls
cd
cat
grep
systemctl
journalctl

这些命令背后分别对应:

  • 查看文件;
  • 移动目录;
  • 阅读内容;
  • 搜索内容;
  • 管理服务;
  • 查看日志。

先理解用途,再记命令。


误区二:看到 sudo 就乱用#

sudo 很强大,但也很危险。

例如:

Terminal window
sudo rm -rf /

这是极其危险的命令,可能删除整个系统。

所以,用 sudo 前要知道自己在做什么。


误区三:只会复制粘贴命令#

复制命令没问题,但要尽量理解:

  • 这个命令在操作什么文件?
  • 是否需要管理员权限?
  • 是否会删除东西?
  • 是否会改系统配置?
  • 是否会影响网络和防火墙?

Linux 里很多事故都是复制了自己没理解的命令造成的。


误区四:忽视日志#

很多新手遇到问题只会反复重启。

但在 Linux 中,更好的方式是看日志:

Terminal window
journalctl -xe
journalctl -u 服务名
tail -f /var/log/xxx.log

日志往往直接告诉你错误原因。


二十、一句话理解 Linux#

Linux 的核心不是“命令很多”,而是:

用统一的文件系统组织资源,用权限控制安全,用小工具组合完成任务,用服务机制支撑长期运行,用日志帮助定位问题。

如果你只是普通使用 Linux,掌握文件、权限、软件安装和基本命令就够了。

如果你想管理服务器,就要进一步掌握:

Terminal window
ssh
systemctl
journalctl
ip
ss
ufw
nginx
docker

如果你想深入 Linux,就要继续理解:

  • 内核
  • 进程调度
  • 文件系统
  • 网络栈
  • systemd
  • 容器
  • 安全机制
  • Shell 脚本

Linux 一开始看起来冷冰冰,但它的逻辑非常一致。

只要你抓住:

文件、权限、进程、服务、网络、日志

这几条主线,就能慢慢把 Linux 从一堆零散命令,理解成一个清晰、有秩序的操作系统世界。

理解 Linux:它不是一堆命令,而是一套操作系统思想
https://karx.cn/posts/understanding-linux/
作者
karx
发布于
2026-06-03
许可协议
CC BY-NC-SA 4.0