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更适合个人开发环境
shPOSIX 标准 Shell
fish交互友好,但兼容性不如 bash

常见命令:

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

3. 文件系统

Linux 中一切皆文件。

常见目录:

目录作用
/根目录
/home普通用户目录
/rootroot 用户目录
/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 权限主要分为:

权限含义
rread,读
wwrite,写
xexecute,执行

权限对象:

对象说明
uuser,文件所有者
ggroup,所属组
oothers,其他用户

示例:

ls -l
# 查看权限

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

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

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

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

权限数字含义:

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

常见权限:

权限场景
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运行后端服务
PM2Node 服务进程守护
Javajar 包部署
PHPPHP-FPM、Nginx 配置
MySQL安装、建库、备份
SSLHTTPS 配置
防火墙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 面试高频题清单

下面这些建议重点掌握:

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

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

结合前端开发、项目部署、阿里云、宝塔、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

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐