很多人第一次接触 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 里有很多重要目录,比如:
/etc/home/var/usr/bin/proc/dev这些目录不是随便命名的,而是 Linux 系统结构的一部分。
三、Linux 文件系统:从根目录开始理解
Linux 没有 Windows 那种明显的 C 盘、D 盘概念。
它的整个文件系统从一个根目录 / 开始。
/所有文件、目录、磁盘、设备,都挂载在这个根目录下面。
你可以把 / 理解成 Linux 世界的起点。
几个常见目录可以这样理解:
1. /home
普通用户的个人目录。
比如用户 nemo 的家目录通常是:
/home/nemo你自己的文档、下载、配置文件,很多都会放在这里。
2. /etc
系统配置文件目录。
很多服务和系统组件的配置都放在这里。例如:
/etc/ssh/etc/nginx/etc/systemd如果你要改服务器配置,经常会接触 /etc。
3. /var
经常变化的数据目录。
例如:
- 日志文件
- 缓存文件
- 网站数据
- 数据库文件
- 邮件队列
常见路径有:
/var/log/var/www/var/lib4. /usr
系统软件、库文件、共享资源所在的位置。
很多程序和命令都放在这里,例如:
/usr/bin/usr/lib/usr/share5. /bin 和 /usr/bin
常用命令程序所在的位置。
比如你输入:
lscpmvcatgrep这些命令本质上也是一个个可执行程序。
6. /dev
设备文件目录。
Linux 会把很多硬件设备抽象成文件,比如:
/dev/sda/dev/null/dev/random这体现了“一切皆文件”的思想。
7. /proc
虚拟文件系统,用来查看系统运行状态。
比如:
/proc/cpuinfo/proc/meminfo可以查看 CPU、内存、进程等信息。
所以,Linux 的目录结构本质上是一张系统地图。你越熟悉这些目录,就越能理解系统是怎么组织起来的。
四、Shell:人与 Linux 对话的方式
Linux 可以有图形界面,但它真正强大的地方在命令行。
命令行不是“落后”,而是一种高效、精确、可自动化的交互方式。
Shell 是用户和 Linux 系统之间的解释器。你输入命令,Shell 负责解释并调用对应程序。
常见 Shell 有:
bashzshfish最常见的是 bash。
例如:
ls查看当前目录内容。
cd /etc进入 /etc 目录。
pwd查看当前所在目录。
cat file.txt查看文件内容。
grep "error" log.txt在文件中搜索包含 error 的行。
五、Linux 命令为什么强大?
Linux 命令的强大之处,不在于单个命令多复杂,而在于它们可以组合。
例如:
cat log.txt | grep "error" | sort | uniq这条命令做了几件事:
cat log.txt读取日志文件;grep "error"筛选包含error的行;sort对结果排序;uniq去除重复行。
这里的 | 叫做管道,意思是把前一个命令的输出交给后一个命令处理。
这体现了 Linux 的另一个重要思想:
每个工具只做一件事,但要做好;多个工具可以组合完成复杂任务。
所以,Linux 不是靠一个庞大的软件完成所有事情,而是靠许多小工具互相配合。
六、权限系统:Linux 为什么重视安全
Linux 是一个多用户系统。
即使你只是一个人在用电脑,系统内部也会区分:
- 普通用户
- 管理员用户
- 系统服务用户
- 程序运行用户
Linux 的权限主要包括三类:
r 读w 写x 执行权限对象也分三类:
user 所有者group 用户组others 其他人使用下面的命令可以查看文件权限:
ls -l你可能会看到类似结果:
-rw-r--r-- 1 nemo nemo 1024 Jun 3 notes.txt其中:
-rw-r--r--可以拆开看:
- 第一个
-表示这是普通文件; rw-表示文件所有者可以读写;r--表示同组用户可以读;r--表示其他人可以读。
如果是目录,开头通常是 d:
drwxr-xr-x这里的 d 表示 directory,也就是目录。
七、sudo:临时获得管理员权限
Linux 中,普通用户不能随便修改系统关键文件。
如果需要管理员权限,通常使用:
sudo例如:
sudo apt update表示以管理员身份更新软件源信息。
sudo systemctl restart nginx表示以管理员身份重启 Nginx 服务。
sudo 的意思不是“无脑强制执行”,而是:
我知道这个操作需要更高权限,我确认要以管理员身份执行。
理解权限非常重要,因为很多 Linux 问题本质上都是权限问题。
比如:
- 文件不能修改;
- 脚本不能执行;
- 服务不能启动;
- 端口不能监听;
- 配置文件改了但不生效。
这些问题背后经常和权限有关。
八、软件安装:包管理器是 Linux 的核心体验
在 Windows 上,安装软件通常是下载安装包,然后一路下一步。
在 Linux 上,更常见的方式是使用包管理器。
不同发行版的包管理器不同。
Ubuntu / Debian 常用:
aptCentOS / RHEL / Fedora 常用:
dnfArch Linux 常用:
pacman以 Ubuntu 为例:
sudo apt update更新软件源信息。
sudo apt install nginx安装 Nginx。
sudo apt remove nginx卸载 Nginx。
sudo apt upgrade升级系统中已安装的软件包。
包管理器解决的不只是“下载软件”,还包括:
- 软件安装
- 软件卸载
- 依赖关系
- 版本管理
- 安全更新
- 软件源管理
理解包管理器,就理解了 Linux 软件生态的一大半。
九、进程:Linux 如何运行程序
程序运行起来以后,就变成了进程。
Linux 是多任务系统,可以同时运行很多进程。
查看进程常用:
ps aux或者:
top如果安装了 htop,也可以使用:
htop它会以更直观的方式显示进程状态。
每个进程都有一个编号,叫 PID。
如果某个进程卡住,可以结束它:
kill PID例如:
kill 1234如果普通结束无效,可以使用:
kill -9 1234不过 kill -9 比较强硬,相当于强制终止,一般不应作为首选。
理解进程有助于你判断:
- 某个程序有没有运行;
- 哪个程序占用了大量 CPU;
- 哪个程序占用了大量内存;
- 为什么端口被占用;
- 某个服务是不是卡死了。
十、服务:服务器世界里的常驻程序
Linux 经常用于服务器。
服务器上有很多长期运行的程序,比如:
- SSH
- Nginx
- Apache
- MySQL
- PostgreSQL
- Redis
- Docker
- 防火墙
这些长期运行的程序通常叫做服务。
在现代 Linux 中,常用 systemctl 管理服务。
查看服务状态:
systemctl status nginx启动服务:
sudo systemctl start nginx停止服务:
sudo systemctl stop nginx重启服务:
sudo systemctl restart nginx设置开机自启:
sudo systemctl enable nginx取消开机自启:
sudo systemctl disable nginx如果你把 Linux 用作服务器,那么 systemctl 是必须熟悉的工具。
十一、日志:Linux 出问题时先看日志
Linux 很多问题不会像 Windows 那样弹窗告诉你,而是写进日志。
学会看日志,是从“会用 Linux”到“会排查 Linux”的关键一步。
常见日志目录是:
/var/log例如:
/var/log/syslog/var/log/auth.log/var/log/nginx/access.log/var/log/nginx/error.log使用 systemd 的系统还可以用:
journalctl查看系统日志。
查看最近的重要错误:
journalctl -xe查看某个服务的日志:
journalctl -u nginx实时查看某个服务的日志:
journalctl -u nginx -fLinux 排错的基本思路可以概括为:
看状态,看日志,看配置,看权限,看网络。
例如一个网站打不开,你可以依次检查:
- Nginx 是否在运行;
- Nginx 日志有没有报错;
- 配置文件是否正确;
- 网站目录权限是否正确;
- 端口是否监听;
- 防火墙是否放行;
- 云服务器安全组是否开放端口。
十二、网络:Linux 服务器绕不开的部分
Linux 常用于服务器,所以网络知识很重要。
查看 IP 地址:
ip addr查看路由:
ip route测试网络连通:
ping 8.8.8.8查看端口监听:
ss -tulnp如果想看系统有哪些服务正在监听端口,可以用:
sudo ss -tulnp其中:
t表示 TCP;u表示 UDP;l表示监听状态;n表示不解析域名和服务名;p表示显示进程信息。
防火墙方面,Ubuntu 常见的是 ufw。
查看防火墙状态:
sudo ufw status开放 SSH 端口:
sudo ufw allow 22开放 HTTP 端口:
sudo ufw allow 80开放 HTTPS 端口:
sudo ufw allow 443启用防火墙:
sudo ufw enable网络问题通常可以按这个顺序排查:
- 本机有没有 IP;
- 能不能访问网关;
- 能不能访问公网 IP;
- DNS 是否正常;
- 服务有没有监听端口;
- 防火墙有没有拦截;
- 云服务器安全组有没有放行。
十三、SSH:远程管理 Linux 的入口
很多人接触 Linux,是从远程连接服务器开始的。
最常见的方式是 SSH。
命令格式一般是:
ssh 用户名@服务器IP例如:
或者:
SSH 的作用是让你在本地电脑上远程登录服务器,然后像在服务器本机一样输入命令。
如果你买了一台云服务器,通常第一件事就是用 SSH 登录它。
SSH 不只是登录工具,还可以传文件。
例如使用 scp:
意思是把本地的 file.txt 复制到远程服务器的 /home/nemo/ 目录。
十四、Linux 的配置文件文化
Linux 很多配置都是文本文件。
例如:
/etc/ssh/sshd_config/etc/nginx/nginx.conf/etc/fstab/etc/hosts这和 Windows 的图形化设置不同。
Linux 更强调:
配置是透明的、可编辑的、可备份的、可自动化的。
你可以用文本编辑器修改配置文件。
常见编辑器有:
nanovim新手可以先用 nano:
sudo nano /etc/ssh/sshd_config修改配置后,很多服务需要重启才会生效:
sudo systemctl restart ssh或者:
sudo systemctl restart nginx所以 Linux 的典型配置流程是:
修改配置文件 → 检查配置语法 → 重启服务 → 查看状态和日志十五、Linux 学习顺序
初学 Linux 不建议一开始追求“命令大全”。
更好的学习顺序是:
第一阶段:理解目录结构
重点理解:
//home/etc/var/usr/dev/proc你要知道常见文件大概放在哪里。
第二阶段:掌握基本命令
先学这些:
pwdlscdcpmvrmmkdircatlessheadtailgrepfind这些命令解决的是最基础的文件和目录操作问题。
第三阶段:理解权限
重点掌握:
chmodchownsudols -l你需要理解什么是读、写、执行权限。
第四阶段:学会安装软件
Ubuntu 上重点掌握:
sudo apt updatesudo apt installsudo apt removesudo apt upgrade第五阶段:理解进程和服务
重点掌握:
pstopkillsystemctljournalctl这部分对服务器管理尤其重要。
第六阶段:理解网络
重点掌握:
ip addrip routepingcurlsssshufw如果你要管理服务器,网络部分一定绕不开。
十六、Linux 常见命令速查
目录操作
pwd # 查看当前目录ls # 查看目录内容ls -l # 详细显示ls -a # 显示隐藏文件cd /etc # 进入 /etc 目录cd ~ # 回到家目录cd .. # 返回上一级目录mkdir test # 创建目录rmdir test # 删除空目录文件操作
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 # 实时查看文件新增内容搜索与筛选
grep "error" log.txt # 搜索文本find / -name "*.conf" # 按文件名查找which nginx # 查看命令位置权限相关
ls -l # 查看权限chmod +x script.sh # 添加执行权限chmod 644 file.txt # 设置文件权限chmod 755 script.sh # 设置脚本或目录权限sudo command # 以管理员权限执行命令软件管理
sudo apt updatesudo apt install nginxsudo apt remove nginxsudo apt upgrade服务管理
systemctl status nginxsudo systemctl start nginxsudo systemctl stop nginxsudo systemctl restart nginxsudo systemctl enable nginxsudo systemctl disable nginx网络相关
ip addrip routeping 8.8.8.8curl example.comsudo ss -tulnpsudo ufw status十七、理解 Linux 的关键主线
Linux 看起来复杂,是因为它涉及的东西很多。
但从理解角度看,可以抓住六条主线:
文件权限进程服务网络日志这六条主线基本覆盖了日常使用和服务器运维的大部分场景。
文件
Linux 用文件系统组织一切。
你要知道文件在哪里、配置在哪里、日志在哪里。
权限
Linux 用权限控制安全。
你要知道谁能读、谁能写、谁能执行。
进程
Linux 中运行的程序都是进程。
你要知道程序是否在运行、占用了多少资源、如何结束它。
服务
服务器上的长期程序通常以服务形式运行。
你要知道如何启动、停止、重启和设置开机自启。
网络
Linux 服务器通常需要对外提供服务。
你要知道 IP、端口、路由、防火墙和 SSH。
日志
Linux 出问题时,答案往往在日志里。
你要学会看 /var/log 和 journalctl。
十八、Linux 和 Windows 的思维差异
Windows 更强调图形界面和软件安装包。
Linux 更强调命令行、文本配置和组合工具。
可以简单比较一下:
| 方面 | Windows | Linux |
|---|---|---|
| 磁盘结构 | C 盘、D 盘 | 从 / 根目录开始 |
| 软件安装 | 下载安装包 | 包管理器安装 |
| 系统配置 | 图形界面、注册表 | 文本配置文件 |
| 权限管理 | 用户权限 + UAC | 用户、组、读写执行权限 |
| 服务管理 | 服务管理器 | systemctl |
| 排错方式 | 弹窗、事件查看器 | 日志、状态、命令 |
| 自动化 | PowerShell、批处理 | Shell 脚本、管道 |
这不是谁高级谁低级的问题,而是设计哲学不同。
Linux 的优势在于:
- 稳定;
- 透明;
- 可控;
- 适合服务器;
- 适合自动化;
- 适合开发和运维;
- 资源占用相对灵活。
十九、学习 Linux 不要陷入的误区
误区一:一开始就背命令大全
命令很多,背不完。
更重要的是理解命令解决什么问题。
例如:
lscdcatgrepsystemctljournalctl这些命令背后分别对应:
- 查看文件;
- 移动目录;
- 阅读内容;
- 搜索内容;
- 管理服务;
- 查看日志。
先理解用途,再记命令。
误区二:看到 sudo 就乱用
sudo 很强大,但也很危险。
例如:
sudo rm -rf /这是极其危险的命令,可能删除整个系统。
所以,用 sudo 前要知道自己在做什么。
误区三:只会复制粘贴命令
复制命令没问题,但要尽量理解:
- 这个命令在操作什么文件?
- 是否需要管理员权限?
- 是否会删除东西?
- 是否会改系统配置?
- 是否会影响网络和防火墙?
Linux 里很多事故都是复制了自己没理解的命令造成的。
误区四:忽视日志
很多新手遇到问题只会反复重启。
但在 Linux 中,更好的方式是看日志:
journalctl -xejournalctl -u 服务名tail -f /var/log/xxx.log日志往往直接告诉你错误原因。
二十、一句话理解 Linux
Linux 的核心不是“命令很多”,而是:
用统一的文件系统组织资源,用权限控制安全,用小工具组合完成任务,用服务机制支撑长期运行,用日志帮助定位问题。
如果你只是普通使用 Linux,掌握文件、权限、软件安装和基本命令就够了。
如果你想管理服务器,就要进一步掌握:
sshsystemctljournalctlipssufwnginxdocker如果你想深入 Linux,就要继续理解:
- 内核
- 进程调度
- 文件系统
- 网络栈
- systemd
- 容器
- 安全机制
- Shell 脚本
Linux 一开始看起来冷冰冰,但它的逻辑非常一致。
只要你抓住:
文件、权限、进程、服务、网络、日志这几条主线,就能慢慢把 Linux 从一堆零散命令,理解成一个清晰、有秩序的操作系统世界。
