Linux 详细讲解:应用领域、学习文档、面试常考

Linux 是一个以 Linux Kernel 内核 为核心的开源操作系统体系。严格来说,Linux 本身主要指内核,负责管理硬件、CPU、内存、进程、文件系统、网络等底层资源;我们日常说的 Ubuntu、Debian、CentOS、Rocky Linux、Arch Linux,通常是基于 Linux 内核封装出来的 Linux 发行版


一、Linux 适合做什么?

Linux 最大的特点是:稳定、安全、开源、性能强、适合服务器和自动化运维

1. 服务器领域

这是 Linux 最核心的应用场景。

常见用途:

应用 说明
Web 服务器 部署 Nginx、Apache、Node.js、Vue、React、Java、PHP 项目
数据库服务器 部署 MySQL、PostgreSQL、Redis、MongoDB
文件服务器 搭建 FTP、SFTP、NFS、Samba
Git 服务器 自建 Git 仓库、GitLab、Gitea
反向代理 使用 Nginx 转发前端、后端接口
SSL 证书 配置 HTTPS
定时任务 使用 crontab 自动备份、自动执行脚本

2. 云计算与 DevOps

现在很多云服务器默认都使用 Linux,例如阿里云、腾讯云、AWS、Google Cloud、Azure。

常见方向:

方向 常用技术
云服务器部署 Ubuntu、Debian、Rocky Linux、CentOS Stream
自动化运维 Shell、Ansible
持续集成 Jenkins、GitHub Actions、GitLab CI
容器化 Docker、Podman
容器编排 Kubernetes
日志监控 Prometheus、Grafana、ELK

3. 容器与虚拟化

Docker、Kubernetes 这类技术大量依赖 Linux 的底层能力,比如:

Linux 能力 作用
Namespace 隔离进程、网络、用户、挂载点
Cgroups 限制 CPU、内存、IO 资源
OverlayFS 实现容器镜像分层
iptables / nftables 网络转发、防火墙
systemd 服务管理

4. 嵌入式与物联网

很多设备底层也会使用 Linux,比如:

场景 示例
路由器 OpenWrt
树莓派 Raspberry Pi OS
智能家居 网关、摄像头、NAS
工业设备 工控机、边缘计算设备
车载系统 车机、控制终端

5. 开发环境

对前端、后端、全栈开发都很重要。

前端开发中常用 Linux 的场景:

场景 说明
部署 Vue / React 项目 打包后上传服务器,Nginx 代理访问
部署 Node.js 服务 使用 pm2、systemd 保持服务常驻
Git 操作 代码拉取、分支管理、仓库搭建
环境安装 Node、pnpm、npm、yarn
脚本自动化 自动打包、自动部署
日志排查 查看 Nginx、Node、系统日志
权限处理 chmod、chown、用户组管理

二、Linux 系统结构

可以把 Linux 理解成几层:

用户应用层
  ↓
Shell / 命令行工具
  ↓
系统库 / 系统调用
  ↓
Linux Kernel 内核
  ↓
硬件:CPU / 内存 / 磁盘 / 网卡

1. Kernel 内核

内核负责:

功能 说明
进程管理 创建、调度、终止进程
内存管理 分配内存、虚拟内存、缓存
文件系统 管理文件、目录、磁盘挂载
网络协议栈 TCP/IP、端口、路由
设备驱动 管理网卡、磁盘、USB、显卡
权限控制 用户、组、权限、安全模块

2. Shell

Shell 是用户和系统交互的命令解释器。

常见 Shell:

Shell 说明
bash 最常见,服务器默认常用
zsh 更适合个人开发环境
sh POSIX 标准 Shell
fish 交互友好,但兼容性不如 bash

常见命令:

pwd        # 查看当前目录
ls         # 查看目录内容
cd         # 切换目录
mkdir      # 创建目录
touch      # 创建文件
cp         # 复制文件
mv         # 移动或重命名文件
rm         # 删除文件
cat        # 查看文件内容
vim        # 编辑文件

3. 文件系统

Linux 中一切皆文件。

常见目录:

目录 作用
/ 根目录
/home 普通用户目录
/root root 用户目录
/etc 配置文件目录
/var 日志、缓存、运行数据
/usr 用户程序和资源
/bin 基础命令
/sbin 系统管理命令
/tmp 临时文件
/opt 第三方软件
/www 宝塔常见网站目录
/var/log 系统日志目录

三、Linux 常用命令

1. 文件和目录命令

pwd
# 显示当前所在目录

ls -al
# 显示所有文件,包括隐藏文件,并展示权限、大小、时间等信息

cd /www/wwwroot
# 进入指定目录

mkdir project
# 创建 project 目录

mkdir -p /data/logs/nginx
# 递归创建多级目录

touch index.html
# 创建空文件

cp a.txt b.txt
# 复制文件

cp -r dist /www/wwwroot/my-site
# 复制整个目录

mv old.txt new.txt
# 重命名文件

rm file.txt
# 删除文件

rm -rf dist
# 强制删除目录,危险命令,慎用

2. 查看文件内容

cat nginx.conf
# 一次性查看整个文件

less access.log
# 分页查看大文件

head -n 20 access.log
# 查看前 20 行

tail -n 50 access.log
# 查看后 50 行

tail -f access.log
# 实时查看日志,部署项目排错常用

3. 搜索命令

find /www -name "*.html"
# 在 /www 目录下查找所有 html 文件

find / -name nginx.conf
# 全局查找 nginx.conf 文件

grep "error" /var/log/nginx/error.log
# 在日志中查找 error

grep -rn "proxy_pass" /www/server/nginx/conf/
# 递归搜索包含 proxy_pass 的文件,并显示行号

4. 权限命令

Linux 权限主要分为:

权限 含义
r read,读
w write,写
x execute,执行

权限对象:

对象 说明
u user,文件所有者
g group,所属组
o others,其他用户

示例:

ls -l
# 查看权限

chmod 755 start.sh
# 所有者可读写执行,组和其他人可读可执行

chmod +x deploy.sh
# 给脚本添加执行权限

chown www:www index.html
# 修改文件所有者和用户组

chown -R www:www /www/wwwroot/my-site
# 递归修改目录归属

权限数字含义:

数字 权限
7 rwx
6 rw-
5 r-x
4 r–

常见权限:

权限 场景
644 普通文件
755 目录、可执行脚本
600 私钥文件
777 不推荐,安全风险高

5. 用户和用户组

whoami
# 查看当前用户

id
# 查看当前用户 UID、GID、用户组

adduser zzw
# 创建用户

passwd zzw
# 设置密码

usermod -aG sudo zzw
# 将用户加入 sudo 组

su - zzw
# 切换用户

sudo command
# 以管理员权限执行命令

6. 进程管理

ps aux
# 查看所有进程

ps aux | grep nginx
# 查找 nginx 进程

top
# 实时查看系统资源

htop
# 更友好的 top,需要单独安装

kill PID
# 结束指定进程

kill -9 PID
# 强制结束进程

nohup node app.js &
# 后台运行 Node 服务

pm2 start app.js
# 使用 pm2 管理 Node 服务

7. 磁盘和内存

df -h
# 查看磁盘空间

du -sh /www/wwwroot/*
# 查看目录大小

free -h
# 查看内存

lsblk
# 查看磁盘分区

mount
# 查看挂载信息

8. 网络命令

ip addr
# 查看 IP 地址

ping baidu.com
# 测试网络连通性

curl http://localhost:3000
# 测试接口或页面访问

wget https://example.com/file.zip
# 下载文件

ss -tunlp
# 查看端口监听情况

netstat -tunlp
# 老版本常见端口查看命令

lsof -i:80
# 查看 80 端口被哪个进程占用

9. 服务管理 systemd

systemctl status nginx
# 查看 nginx 状态

systemctl start nginx
# 启动 nginx

systemctl stop nginx
# 停止 nginx

systemctl restart nginx
# 重启 nginx

systemctl reload nginx
# 平滑重载配置

systemctl enable nginx
# 设置开机自启

journalctl -u nginx -f
# 实时查看 nginx 服务日志

10. 软件包管理

Ubuntu / Debian:

apt update
# 更新软件源

apt install nginx
# 安装 nginx

apt remove nginx
# 卸载 nginx

apt upgrade
# 更新已安装软件

CentOS / Rocky Linux / RHEL:

dnf install nginx
# 安装 nginx

dnf remove nginx
# 卸载 nginx

dnf update
# 更新软件

四、Linux 发行版怎么选?

发行版 适合人群 特点
Ubuntu 新手、开发者、云服务器 文档多,社区大,部署简单
Debian 稳定服务器 稳定、保守、安全
Rocky Linux 企业服务器 替代 CentOS 的常见选择
AlmaLinux 企业服务器 RHEL 兼容方向
Arch Linux 进阶学习者 滚动更新,适合深入理解 Linux
Kali Linux 网络安全学习 内置安全工具
Fedora 新技术体验 更新快,适合开发者
openSUSE 桌面与企业 工具完善

对前端开发、部署 Vue / React / Node / Java / PHP 项目的方向,建议优先学:

Ubuntu Server → Nginx → Git → Node.js → Docker → Shell → MySQL/Redis → 安全加固

五、Linux 学习路线

阶段一:基础入门

目标:会使用 Linux 命令。

需要掌握:

模块 内容
目录结构 /etc/var/home/usr
文件操作 ls、cd、cp、mv、rm、touch
文件查看 cat、less、head、tail
编辑器 vim、nano
权限 chmod、chown、用户、用户组
软件安装 apt、dnf、yum
网络基础 ping、curl、wget、ip、ss

练习项目:

1. 在虚拟机安装 Ubuntu Server
2. 创建一个普通用户
3. 安装 Nginx
4. 写一个 index.html
5. 用浏览器访问服务器页面

阶段二:服务器部署

目标:能把项目部署上线。

需要掌握:

模块 内容
SSH 远程连接服务器
Nginx 静态资源部署、反向代理
Node.js 运行后端服务
PM2 Node 服务进程守护
Java jar 包部署
PHP PHP-FPM、Nginx 配置
MySQL 安装、建库、备份
SSL HTTPS 配置
防火墙 ufw、firewalld、安全组

前端项目部署示例:

npm run build

scp -r dist root@服务器IP:/www/wwwroot/vue-demo

# Nginx 配置根目录指向 dist

Nginx 配置示例:

server {
    listen 80;
    server_name example.com;

    root /www/wwwroot/vue-demo;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:8080/;
    }
}

阶段三:Shell 脚本

目标:能写自动化脚本。

示例:自动部署 Vue 项目。

#!/bin/bash

echo "开始拉取代码..."
git pull

echo "安装依赖..."
npm install

echo "开始打包..."
npm run build

echo "复制文件到网站目录..."
rm -rf /www/wwwroot/vue-demo/*
cp -r dist/* /www/wwwroot/vue-demo/

echo "重载 Nginx..."
systemctl reload nginx

echo "部署完成"

阶段四:Docker 和容器

目标:能使用 Docker 部署项目。

需要掌握:

模块 内容
镜像 image
容器 container
Dockerfile 自定义镜像
volume 数据持久化
network 容器网络
docker compose 多服务编排
registry 镜像仓库

前端 Dockerfile 示例:

FROM nginx:alpine

COPY dist /usr/share/nginx/html

EXPOSE 80

构建和运行:

docker build -t vue-demo .
docker run -d -p 80:80 vue-demo

阶段五:系统安全和性能优化

目标:能维护线上服务器。

需要掌握:

方向 内容
用户安全 禁止 root 密码登录、使用普通用户 sudo
SSH 安全 改端口、密钥登录
防火墙 只开放必要端口
日志排查 /var/log、journalctl
备份 数据库备份、网站备份
监控 CPU、内存、磁盘、网络
性能 top、free、df、du、iostat

六、推荐学习文档

文档 适合阶段 说明
Linux Kernel Documentation 高级 官方内核文档,适合了解内核、驱动、系统底层
Ubuntu Server Documentation 入门到实战 Ubuntu 服务器安装、网络、安全、Web 服务、虚拟化等
Debian Administrator’s Handbook 入门到进阶 Debian / Ubuntu 系统管理经典资料
Red Hat Documentation 企业级 RHEL、OpenShift、Ansible 等企业级 Linux 技术
ArchWiki System Administration 进阶 配置、系统管理、故障排查资料丰富
Kubernetes Docs 容器编排 云原生、集群、生产环境部署
Docker Docs 容器基础 容器隔离、安全、镜像、网络等
Raspberry Pi Documentation 嵌入式 树莓派、Linux 内核、远程访问、AI 硬件等

七、Linux 面试常考点

1. Linux 和 Windows 有什么区别?

Linux 更适合服务器、命令行、自动化、权限控制和高稳定性场景;Windows 更偏向桌面办公、图形化软件和普通用户环境。Linux 开源、可高度定制,服务器部署、云计算、容器化领域使用非常广泛。


2. 什么是 Linux 内核?

Linux 内核是操作系统的核心,负责管理硬件资源、进程、内存、文件系统、网络和设备驱动。用户程序不会直接操作硬件,而是通过系统调用让内核完成底层操作。


3. Linux 中“一切皆文件”是什么意思?

在 Linux 中,普通文件、目录、设备、管道、Socket 等很多资源都可以用文件的方式进行访问。例如磁盘设备可能在 /dev/sda,终端设备可能在 /dev/tty


4. 绝对路径和相对路径有什么区别?

/home/zzw/project

这是绝对路径,从根目录 / 开始。

./project
../logs

这是相对路径,基于当前目录。


5. chmod 755 是什么意思?

755 表示:

对象 权限
所有者 7 = rwx
所属组 5 = r-x
其他用户 5 = r-x

也就是所有者可以读、写、执行,其他人只能读和执行。


6. chmod 和 chown 区别是什么?

命令 作用
chmod 修改文件权限
chown 修改文件所有者和所属组

示例:

chmod 755 deploy.sh
chown www:www index.html

7. 如何查看 Linux 当前端口占用?

ss -tunlp

或:

lsof -i:80

8. 如何查看 Nginx 是否启动?

systemctl status nginx

也可以查看端口:

ss -tunlp | grep 80

9. 如何实时查看日志?

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
journalctl -u nginx -f

10. 如何查看磁盘空间?

df -h

查看某个目录大小:

du -sh /www/wwwroot

11. 如何查看内存?

free -h

实时查看资源:

top

12. ps、top、kill 是干什么的?

命令 作用
ps 查看进程快照
top 实时查看进程资源
kill 结束进程

13. kill 和 kill -9 区别?

kill PID

正常请求进程退出。

kill -9 PID

强制杀死进程,进程没有机会做清理操作,不建议优先使用。


14. 什么是软链接?

软链接类似 Windows 快捷方式。

ln -s /www/wwwroot/vue-demo /home/zzw/vue-demo

删除软链接不会删除源文件。


15. 硬链接和软链接区别?

对比 软链接 硬链接
是否指向路径 否,指向 inode
能否跨分区 可以 通常不可以
源文件删除后 可能失效 文件内容仍可访问
能否链接目录 可以 通常不允许

16. 什么是 inode?

inode 是 Linux 文件系统中用于记录文件元信息的数据结构,包括权限、所有者、大小、时间、数据块位置等。文件名不是存在 inode 里,而是在目录项里指向 inode。


17. 如何查找文件?

find / -name nginx.conf

查找包含某段内容的文件:

grep -rn "server_name" /etc/nginx

18. Linux 如何设置定时任务?

使用 crontab。

crontab -e

每天凌晨 2 点执行备份:

0 2 * * * /home/zzw/backup.sh

19. 什么是 systemd?

systemd 是 Linux 中常见的系统和服务管理器,用来管理服务启动、停止、重启、开机自启和日志。

常用命令:

systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx

20. 如何排查网站打不开?

可以按这个顺序排查:

1. 域名是否解析正确
2. 服务器安全组是否开放 80 / 443
3. Linux 防火墙是否开放端口
4. Nginx 是否启动
5. Nginx 配置是否正确
6. 网站目录是否正确
7. 文件权限是否正确
8. 后端接口是否启动
9. 日志是否有报错

常用命令:

ping 域名
curl http://127.0.0.1
systemctl status nginx
nginx -t
tail -f /var/log/nginx/error.log
ss -tunlp

21. 如何查看系统负载?

uptime
top

load average 表示系统平均负载。


22. 如何查看当前登录用户?

who
w
whoami

23. 如何查看系统版本?

cat /etc/os-release
uname -a

24. 如何修改 SSH 端口?

编辑配置文件:

vim /etc/ssh/sshd_config

修改:

Port 2222

重启 SSH:

systemctl restart ssh

注意:修改前要先在安全组和防火墙开放新端口,避免把自己锁在服务器外面。


25. 如何部署 Vue 项目到 Linux?

基本流程:

1. 本地 npm run build
2. 上传 dist 到服务器
3. Nginx root 指向 dist
4. 配置 try_files 支持前端路由
5. 配置后端 API 反向代理
6. 重载 Nginx

Nginx 核心配置:

location / {
    try_files $uri $uri/ /index.html;
}

八、Linux 面试高频题清单

下面这些建议重点掌握:

序号 高频问题
1 Linux 常见目录结构有哪些?
2 /etc/var/usr/home 分别存什么?
3 chmod 755 是什么意思?
4 chown 和 chmod 区别?
5 如何查看端口占用?
6 如何查看进程?
7 如何杀死进程?
8 kill 和 kill -9 区别?
9 如何查看日志?
10 如何查看磁盘空间?
11 如何查看目录大小?
12 如何查看内存?
13 如何查看 CPU 占用?
14 如何查找文件?
15 如何搜索文件内容?
16 软链接和硬链接区别?
17 什么是 inode?
18 什么是 Shell?
19 bash 和 sh 区别?
20 什么是环境变量?
21 如何配置环境变量?
22 crontab 怎么用?
23 systemctl 常用命令有哪些?
24 Linux 如何设置开机自启?
25 如何排查服务器负载高?
26 如何排查磁盘满了?
27 如何排查网站打不开?
28 如何排查接口 502?
29 Nginx 反向代理怎么配置?
30 Linux 防火墙怎么开放端口?
31 SSH 连接不上怎么排查?
32 root 用户和普通用户区别?
33 sudo 是什么?
34 Linux 文件权限模型是什么?
35 什么是进程、线程?
36 什么是僵尸进程?
37 什么是守护进程?
38 nohup、&、pm2 区别?
39 如何后台运行程序?
40 如何查看系统版本?
41 如何安装软件?
42 apt、yum、dnf 区别?
43 如何配置静态 IP?
44 如何查看路由?
45 如何测试网络连通性?
46 如何查看 DNS 配置?
47 Docker 和虚拟机区别?
48 Linux namespace 是什么?
49 Linux cgroups 是什么?
50 Linux 服务器如何做基础安全加固?

九、最适合前端开发者的学习顺序

结合前端开发、项目部署、阿里云、宝塔、Vue 项目的需求,建议这样学:

第 1 步:Linux 基础命令
第 2 步:SSH 远程连接服务器
第 3 步:文件权限 chmod / chown
第 4 步:Nginx 部署 Vue / React 项目
第 5 步:Node.js / Java / PHP 服务部署
第 6 步:MySQL / Redis 安装和备份
第 7 步:Git 仓库搭建和代码拉取
第 8 步:Shell 自动化部署脚本
第 9 步:Docker 容器部署
第 10 步:服务器安全、日志、监控、性能优化

优先掌握这几个命令组合:

cd
ls -al
pwd
cp
mv
rm
mkdir
touch
cat
vim
tail -f
grep
find
chmod
chown
ps aux
top
df -h
du -sh
free -h
ss -tunlp
curl
systemctl
journalctl

十、Linux 实战练习项目

项目 能力提升
部署一个 Vue 项目 掌握 Nginx、静态资源、前端路由
部署一个 Node.js 接口 掌握端口、进程、pm2
部署一个 Java jar 包 掌握后台服务、日志
搭建 MySQL 掌握数据库安装、远程连接、备份
搭建 Git 仓库 掌握 SSH、权限、裸仓库
写自动部署脚本 掌握 Shell、Git、Nginx
配置 HTTPS 掌握域名、证书、Nginx
配置防火墙 掌握端口、安全组、安全加固
使用 Docker 部署项目 掌握镜像、容器、Dockerfile
日志排查 502 / 404 / 403 掌握线上问题定位

十一、总结

Linux 是开发者必须掌握的核心技能,尤其是做前端项目上线、服务器部署、Nginx 配置、接口代理、Git 仓库、Docker、自动化运维时非常重要。

推荐学习路线:

Linux 命令基础
→ 文件权限
→ SSH 远程服务器
→ Nginx 部署项目
→ Git / Node / Java / PHP 环境
→ Shell 自动化
→ Docker
→ 安全加固和性能排查

对前端开发来说,Linux 不需要一开始学内核源码,重点是先掌握 服务器部署、命令行操作、权限、Nginx、日志排查、Shell 脚本、Docker。这些是真正能在项目上线和面试中直接用到的内容。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐