1. 核心概念
1.1 什么是Linux?
Linux是一套免费使用和自由传播的操作系统。作为JavaEE开发工程师,企业在开发时会涉及大量数据库、中间件技术(如MySQL、Redis、MQ等),而这些软件大多需要安装在Linux系统中。
为什么Java开发者必须掌握Linux?
- 企业服务器大多运行在Linux系统上
- 需要通过远程工具连接Linux操作各类软件
- 小公司可能需要开发人员自行在服务器上安装软件
- 无论是企业用人需求还是个人发展,Linux基本使用都是必不可少的技能
1.2 主流操作系统分类
| 领域 | 操作系统 | 特点 |
|---|---|---|
| 桌面操作系统 | Windows | 用户数量最多 |
| MacOS | 操作体验好,办公人士首选 | |
| Linux | 桌面领域使用较少 | |
| 服务器操作系统 | Unix | 安全、稳定、付费 |
| Linux | 安全、稳定、免费、占有率高 | |
| Windows Server | 付费、占有率低 | |
| 移动设备操作系统 | Android | 基于Linux、开源,用于智能手机/平板/智能电视 |
| IOS | 苹果公司开发、不开源 | |
| HarmonyOS | 华为公司开发、开源 |
1.3 Linux系统版本
Linux系统的版本分为两种:
| 版本类型 | 说明 |
|---|---|
| 内核版 | 由Linus Torvalds及其团队开发维护,免费开源,负责控制硬件 |
| 发行版 | 基于内核版扩展,由各厂商开发维护,有收费和免费版本 |
常见的发行版包括:Ubuntu、CentOS、RedHat、Debian、Fedora、Kali Linux等。我们实际使用的是发行版。
2. 环境搭建
2.1 安装方式
Linux系统主要有两种安装方式:
- 虚拟机安装:通过软件模拟完整硬件系统功能,运行在完全隔离环境中。常用软件:VMWare、VirtualBox、Qemu等。
- 物理机安装 :直接在物理计算机上安装Linux作为唯一的操作系统,会完全替换掉硬盘上原有的系统。
- 注意:此方法会清空硬盘所有数据,风险极高,请勿使用。
本文选择 :使用 VMware 虚拟机软件安装CentOS 7。
2.2 挂载Linux系统步骤
- 打开VMware →
编辑→虚拟网络编辑器

- 选择
NAT模式→更改设置

- 设置子网IP为
192.168.100.0→应用→确定

- 解压
CentOS7-1.zip到较大磁盘(无中文目录)

- 双击
.vmx文件,以VMware Workstation打开

- 启动虚拟机,出现提示时选择
我已移动该虚拟机


- 登录:用户名
root,密码1234(输入密码不显示,回车即可)

2.3 SSH远程连接
企业开发中,Linux服务器通常在远程机房,我们通过SSH连接工具远程操作。

2.3.1 FinalShell连接步骤
- 新建连接配置
打开FinalShell客户端,点击左上角的"文件"菜单,选择"新建连接"。在弹出的窗口中,选择"SSH连接"类型:

- 在配置面板中填写以下信息
连接配置详情表
| 配置项 | 值 | 说明 |
|---|---|---|
| 名称 | 自定义 (如: CentOS-Node) | 用于标识该连接的名称 |
| 主机 | 192.168.100.128 |
虚拟机中Linux系统的IP地址 |
| 端口 | 22 |
SSH默认端口 |
| 用户 | root |
登录用户名 |
| 密码 | 1234 |
对应用户的登录密码 |
注意: 请确保虚拟机已开启 且网络通畅 且登陆成功,若IP地址发生变动,请以虚拟机内实际IP为准。
填写完上述信息后,界面应如下图所示:

- 建立连接
点击窗口下方的"确定"按钮保存配置,随后在连接列表中双击该连接图标。
连接成功后,FinalShell会自动打开终端窗口。

- 其他配置选项
FinalShell还支持丰富的个性化设置,如主题颜色、字体大小及传输协议等,用户可根据个人习惯在"选项"菜单中进行调整。


3. Linux目录结构
3.1 与Windows的对比

| 系统 | 目录结构特点 |
|---|---|
| Windows | 以盘符为根(C盘、D盘、E盘),目录归属于盘符 |
| Linux | / 是所有目录的顶点,结构像一颗倒挂的树 |
3.2 根目录 / 下各目录含义

| 目录 | 含义 |
|---|---|
/bin |
存放二进制可执行文件 |
/boot |
存放系统引导时使用的各种文件 |
/dev |
存放设备文件 |
/etc |
存放系统配置文件 |
/home |
存放系统用户的文件 |
/lib |
存放程序运行所需的共享库和内核模块 |
/opt |
额外安装的可选应用程序包位置 |
/root |
超级用户目录 |
/sbin |
存放二进制可执行文件,仅root可访问 |
/tmp |
存放临时文件 |
/usr |
存放系统应用程序 |
/var |
存放运行时需改变的文件(如日志) |
3.3 绝对路径与相对路径
在Linux系统中定位文件或目录时,路径的写法决定了系统查找的起点。路径主要分为绝对路径 和相对路径两种。
-
绝对路径
- 定义 :从根目录
/开始写起,完整描述文件位置的路径。 - 特点 :路径以
/开头,无论当前在哪个目录下,都能准确找到目标。 - 示例 :
/root指的是根目录/下的root目录。
- 定义 :从根目录
-
相对路径
- 定义:相对于当前工作目录的路径。
- 特点 :路径不以
/开头,系统会从"当前所在的目录"开始寻找。 - 示例 :
root指的是当前目录下的root子目录。
区别总结:
/root:绝对路径,代表根目录下的root。root:相对路径,代表当前目录下的root。
4. Linux常用命令
4.1 命令格式与使用技巧
命令格式 :command [-options] [parameter]
command:命令名[-options]:选项,可选[parameter]:参数,零个或多个
使用技巧
Tab键自动补全- 连续两次
Tab键给出操作提示- 上下箭头快速调出历史命令
clear或Ctrl+L清屏
示例:

4.2 目录操作命令
4.2.1 ls ------ 显示目录内容
ls 是 Linux 中最基础且最常用的命令之一,用于列出指定目录下的文件和子目录信息。
4.2.1.1 命令语法
bash
ls [选项] [目录路径]
4.2.1.2 常用选项
| 选项 | 说明 |
|---|---|
-a |
All :显示所有文件,包含以 . 开头的隐藏文件 |
-l |
Long :长格式显示,列出文件类型 、权限 、拥有者 、大小 及修改时间等详细信息 |
简写技巧:
由于
ls -l使用频率极高,Linux 系统通常为其提供了一个快捷别名ll。
- 输入
ll等同于输入ls -l。
4.2.1.3 常见用法示例:
bash
# 1. 查看当前目录的所有文件(含隐藏文件)及详细信息
ls -al

bash
# 2. 查看指定目录(如 /root)下的所有文件及详细信息
ls -al /root

bash
# 3. 查看当前目录的详细信息(使用简写命令)
ll

4.2.1.4 输出字段详解
使用 -l 选项后,输出结果从左到右依次包含 7 列信息:

| 列序 | 名称 | 详细说明 |
|---|---|---|
| 1 | 权限 | 第1位 :文件类型(d=目录, -=普通文件, l=链接)。 后9位 :每3位一组,分别代表所有者 、所属组 、其他人 的权限。 r=读, w=写, x=执行, -=无权限。 |
| 2 | 链接数 | 文件的硬链接数;若是目录,则表示其下的子目录数量 + 2 (包含 . 和 ..)。 |
| 3 | 所有者 | 文件归属的用户名(如 root)。 |
| 4 | 所属组 | 文件归属的用户组名。 |
| 5 | 大小 | 文件大小(单位:字节)。 注意:目录的大小通常显示为 4096 等固定值,仅代表目录元数据大小,而非其内文件总和。 |
| 6 | 时间 | 文件最后一次被修改的日期和时间。 |
| 7 | 文件名 | . 代表当前目录,.. 代表上级目录,. 开头代表隐藏文件。 |
4.2.2 cd ------ 切换目录
cd (Change Directory) 是 Linux 中最常用的导航命令,用于切换当前工作目录。
4.2.2.1 命令语法
bash
cd [目录路径]
4.2.2.2 常用特殊符号
| 符号 | 含义 | 示例 |
|---|---|---|
~ |
用户家目录 (root 为 /root,普通用户为 /home/xxx) |
cd ~ 或仅输入 cd |
. |
当前目录 | cd . (通常无意义,用于脚本中) |
.. |
上级目录 | cd .. (返回上一级) |
- |
上一次所在的目录 | cd - (在两个目录间快速切换) |
4.2.2.3 常见用法示例
bash
# 1. 切换到绝对路径指定的目录
cd /usr/local

bash
# 2. 回到上一次所在的目录 (非常实用)
cd -

bash
# 3. 切换到上级目录
cd ..

bash
# 4. 切换到用户的 home 目录 (等价于 cd ~)
cd

bash
# 5. 切换到上上级目录
cd ../..

4.2.3 mkdir ------ 创建目录
mkdir (Make Directory) 用于创建一个新的空目录。
4.2.3.1 命令语法
bash
mkdir [选项] 目录名
4.2.3.2 常用选项
| 选项 | 说明 |
|---|---|
-p |
Parents:递归创建多层目录。若父目录不存在,则一并创建,且不会报错。 |
-v |
Verbose:显示命令执行过程(创建成功会提示)。 |
4.2.3.3 常见用法示例
bash
# 1. 在当前目录创建名为 itcast 的子目录
mkdir itcast

bash
# 2. 递归创建多层目录 (如 itcast/test/java)
# 若 itcast 或 test 不存在,系统会自动创建它们
mkdir -p itcast/test/java

bash
# 3. 一次创建多个同级目录
mkdir dir1 dir2 dir3

4.2.4 rm ------ 删除文件或目录
rm (Remove) 用于删除文件或目录。注意:Linux 中没有回收站,删除后难以恢复,请务必谨慎!
4.2.4.1 命令语法
bash
rm [选项] 文件/目录
4.2.4.2 常用选项
| 选项 | 说明 |
|---|---|
-r |
Recursive :递归删除。删除目录时必须加此选项,会删除目录下的所有内容。 |
-f |
Force :强制删除。忽略不存在的文件,不提示确认(危险!)。 |
-i |
Interactive:交互模式。删除前逐个询问确认(系统默认别名通常包含此选项)。 |
4.2.4.3 常见用法示例
bash
# 1. 删除目录及内容 (删除前需按 y 确认)
rm -r java/

bash
# 2. 强制删除目录及内容 (无需确认,直接删除,极度危险)
rm -rf java/

bash
# 3. 强制删除文件 (无需确认)
rm -f hello.txt

⚠️ 高危警告:
rm -rf /:切勿尝试执行此命令,它会清空系统根目录下所有文件,导致系统崩溃!- 使用
rm -rf前,请务必二次确认当前路径和文件名,避免误删生产数据。
4.3 文件查看命令
4.3.1 cat ------ 显示文件内容
cat (Concatenate) 用于查看、创建或合并文件内容,适合查看较小的文件。
4.3.1.1 命令语法
bash
cat [选项] [文件路径]
4.3.1.2 常用选项
| 选项 | 说明 |
|---|---|
-n |
Number:显示行号(包括空行) |
-b |
显示行号(不包括空行) |
-E |
在每行末尾显示 $ 符号(标记行尾) |
-A |
显示所有字符(包括不可见字符) |
4.3.1.3 常见用法示例
bash
# 1. 查看文件全部内容
cat jdk-21.0.10/release

bash
# 2. 查看文件内容并显示行号
cat -n jdk-21.0.10/release

⚠️ 注意事项:
cat会一次性显示全部内容,文件较大时会导致屏幕快速滚动,不便查看- 查看大文件建议使用
more命令进行分页浏览
4.3.2 more ------ 分页显示文件内容
more 用于分页查看文件内容,适合浏览较大的文本文件。
4.3.2.1 命令语法
bash
more [选项] 文件路径
4.3.2.2 常用操作键
| 按键 | 说明 |
|---|---|
| 空格键 | 向下滚动一屏(最常用) |
| 回车键 | 向下滚动一行 |
b |
返回上一屏(Back) |
/关键词 |
搜索 关键词(如 /error) |
q |
退出查看(Quit) |
Ctrl+C |
强制退出 |
4.3.2.3 常见用法示例
bash
# 1. 分页查看文件内容
more release

bash
# 2. 指定每屏显示的行数(如每屏20行)
more -20 release

4.3.3 head ------ 查看文件开头
head 用于查看文件的头部内容 ,默认显示前 10 行。
4.3.3.1 命令语法
bash
head [选项] [文件路径]
4.3.3.2 常用选项
| 选项 | 说明 |
|---|---|
-n 数字 |
显示指定的行数(如 -n 20 显示前 20 行) |
-c 数字 |
显示指定的字节数 (如 -c 100 显示前 100 字节) |
4.3.3.3 常见用法示例
bash
# 1. 默认显示文件开头 10 行
head LICENSE

bash
# 2. 显示文件开头 20 行
head -20 LICENSE

实用场景:
- 快速查看配置文件的前几行,确认格式是否正确
- 检查 CSV/日志文件的表头结构
4.3.4 tail ------ 查看文件末尾
tail 用于查看文件的尾部内容 ,默认显示最后 10 行 ,常用于日志监控。
4.3.4.1 命令语法
bash
tail [选项] [文件路径]
4.3.4.2 常用选项
| 选项 | 说明 |
|---|---|
-n 数字 |
显示指定的行数(如 -n 20 显示最后 20 行) |
-f |
Follow:动态跟踪文件变化,实时显示新增内容(最常用) |
-F |
类似 -f,但文件被重命名或删除后仍会继续跟踪 |
4.3.4.3 常见用法示例
bash
# 1. 默认显示文件末尾 10 行
tail LICENSE

bash
# 2. 显示文件末尾 20 行
tail -20 LICENSE

bash
# 3. 动态实时监控日志文件(按 Ctrl+C 退出)
tail -f notes.txt

💡动态日志监控场景:
窗口1 :执行
tail -f notes.txt动态查看文件
bashtail -f notes.txt窗口2 :执行
echo追加内容
bashecho "新日志内容" >> notes.txt效果 :窗口1会实时显示 窗口2追加的新数据,按
Ctrl+C结束监控。
4.3.5 命令对比总结
| 命令 | 适用场景 | 特点 |
|---|---|---|
cat |
查看小文件 | 一次性显示全部内容 |
more |
查看大文件 | 分页显示,只能向下翻 |
head |
查看文件开头 | 默认显示前 10 行 |
tail |
查看文件末尾 | 默认显示后 10 行,支持实时监控 |
📌 选择建议:
- 文件 < 100 行 → 用
cat- 查看配置/表头 → 用
head- 查看日志/监控 → 用
tail -f
4.4 拷贝与移动命令
4.4.1 cp ------ 复制文件或目录
cp (Copy) 用于复制文件或目录,是日常操作中最常用的命令之一。
4.4.1.1 命令语法
bash
cp [选项] 源文件/目录 目标路径
4.4.1.2 常用选项
| 选项 | 说明 |
|---|---|
-r |
Recursive :递归复制。复制目录时必须加此选项,会复制目录下的所有内容 |
-p |
Preserve:保留原文件的属性(权限、时间戳、所有者等) |
-i |
Interactive:交互模式,覆盖前询问确认(避免误覆盖) |
-u |
Update:仅当源文件比目标文件新,或目标不存在时才复制 |
-a |
Archive :归档模式,等价于 -rdp,常用于备份 |
4.4.1.3 常见用法示例
bash
# 1. 复制文件到当前目录并重命名
cp Ragdoll.txt ./Dragon_Li.txt

bash
# 2. 复制文件到指定目录(保持原文件名)
cp Ragdoll.txt /root/itcats/

bash
# 3. 递归复制目录(⚠️ 目录必加 -r):将 cats 整体放入 itcats 中
cp -r cats/ ./itcats/

bash
# 4. 仅复制目录下的文件(不包含子目录)
cp -r cats/* ./itcats/

⚠️ 注意事项:
- 复制目录必须加
-r:否则会提示omitting directory错误- 覆盖风险 :默认情况下,
cp会静默覆盖 同名文件,重要文件建议加-i或先备份- 权限保留 :普通
cp可能丢失原文件权限,系统文件备份建议用cp -p或cp -a
4.4.2 mv ------ 移动或重命名
mv (Move) 用于移动文件/目录 或重命名 ,本质是将文件从一个路径"剪切"到另一个路径。
4.4.2.1 命令语法
bash
mv [选项] 源文件/目录 目标路径
4.4.2.2 常用选项
| 选项 | 说明 |
|---|---|
-i |
Interactive:覆盖前询问确认(避免误覆盖) |
-f |
Force:强制覆盖,不提示(危险!) |
-u |
Update:仅当源文件比目标文件新时才移动 |
-n |
No-clobber:不覆盖已存在的文件 |
4.4.2.3 核心判定规则
mv 的行为取决于第二个参数的类型:
| 第二个参数 | 执行操作 | 示例 |
|---|---|---|
| 已存在的目录 | ✅ 移动:将源文件放入该目录 | mv file.txt /tmp/ |
| 不存在的路径 | ✏️ 重命名:将源文件改名为该路径 | mv file.txt newname.txt |
4.4.2.4 常见用法示例
bash
# 1. 重命名文件(目标路径不存在 → 改名)
mv Ragdoll.txt Goods.txt

bash
# 2. 移动文件到目录(目标路径是目录 → 移动)
mv Goods.txt /root/itcats/

bash
# 3. 移动并改名(目标路径是目录+新文件名)
mv Dragon_Li.txt /root/itcats/hello.txt

bash
# 4. 移动/重命名目录(规则同文件)
# 若 itheima/ 不存在 → 将 itcast/ 改名为 itheima/
# 若 itheima/ 已存在 → 将 itcast/ 移动到 itheima/ 内部
mv itcast/ itheima/
⚠️ 高危警告:
mv覆盖不可逆 :被覆盖的文件无法恢复,重要操作前务必备份- 跨设备移动 :若源和目标在不同磁盘分区,
mv实际是"复制+删除",大文件耗时较长- 权限问题 :确保对源文件有读+写 权限,对目标目录有写权限
4.4.3 cp vs mv 对比总结
| 特性 | cp(复制) |
mv(移动/改名) |
|---|---|---|
| 原文件 | ✅ 保留 | ❌ 消失(被剪切) |
| 复制目录 | 必须加 -r |
无需额外参数 |
| 磁盘占用 | 增加(多一份副本) | 不变(仅改变路径) |
| 执行速度 | 较慢(需读取+写入) | 同分区极快(仅改元数据) |
| 典型场景 | 备份、分发、模板复制 | 整理文件、重命名、归档 |
4.5 打包与压缩命令
4.5.1 tar ------ 打包与归档
tar (Tape Archive) 是 Linux 中最核心的归档工具。注意 :tar 本身只负责打包 (将多个文件/目录合并为一个文件),需配合压缩算法(如 gzip)才能实现压缩。
4.5.1.1 命令语法
bash
tar [选项] [打包/压缩后的文件名] [源文件/目录]
4.5.1.2 核心参数详解
| 选项 | 含义 | 关键说明 |
|---|---|---|
-c |
Create | 创建新的归档文件(打包操作) |
-x |
Extract | 从归档文件中释放文件(解包操作) |
-f |
File | 必须放在参数组合的最后,紧跟指定的文件名 |
-z |
Gzip | 调用 gzip 算法进行压缩/解压(最常用) |
-v |
Verbose | 显示详细执行过程(可选,方便排查) |
-C |
Directory | 指定解压的目标目录(仅解压时有效) |
4.5.1.3 常见用法示例

避坑指南:
-f参数位置 :-f必须紧跟文件名,且通常放在参数组合的最后面 。错误示例:tar -zcvf backup.tar.gz✅ vstar -fzcv backup.tar.gz❌- 覆盖风险 :打包/压缩时若目标文件名已存在,会静默覆盖 ,操作前建议先
ls检查。- 解压路径混乱 :不解压到指定目录(
-C)时,压缩包内的文件会直接散落在当前目录,极易造成混乱。建议养成加-C的习惯。- 权限保留 :普通用户解压可能丢失原文件权限,系统文件建议使用
sudo tar ...或加--no-same-owner参数调整。
4.5.1.4 常用压缩格式对比
| 后缀格式 | 对应参数 | 特点 | 适用场景 |
|---|---|---|---|
.tar |
-cvf / -xvf |
仅打包,不压缩,体积大但速度极快 | 局域网传输、快速归档备份 |
.tar.gz |
-zcvf / -zxvf |
打包+gzip压缩,速度与体积平衡 | 最常用,软件包、日志、源码 |
.tar.bz2 |
-jcvf / -jxvf |
压缩率较高,CPU占用略高 | 对存储空间敏感的场景 |
.tar.xz |
-Jcvf / -Jxvf |
压缩率极高,但最耗时 | 系统镜像、超大型数据集 |
📌 常用命令速记口诀:
- 打包压缩 :
-zcvf(zip create verbose file)- 解压缩 :
-zxvf(zip extract verbose file)- 指定位置 :末尾加
-C /目标路径
4.6 文本编辑命令(vim)
vim 是 Linux 系统中最强大的终端文本编辑器。
4.6.1 安装与启动
bash
# 检查是否已安装(通常系统已自带)
vim --version
# 若未安装,使用 yum 安装(CentOS/RHEL)
yum install vim -y
# 启动 vim(文件不存在则自动创建,存在则打开编辑)
vim filename.txt
注意 :
vim启动后默认进入命令模式,此时键盘输入会被识别为指令而非文本。
4.6.2 三种工作模式
vim 的核心在于模式分离,操作前务必确认当前所处模式:

| 模式 | 触发方式 | 主要用途 | 状态提示 |
|---|---|---|---|
| 命令模式 | 启动时默认进入,或按 ESC 返回 |
光标移动、复制粘贴、删除行、进入其他模式 | 无提示 |
| 插入模式 | 命令模式下按 i / a / o 等 |
正常输入或修改文件内容 | 左下角显示 -- INSERT -- |
| 底行模式 | 命令模式下按 : 或 / |
保存、退出、查找、替换、设置选项 | 光标跳至最下方 : 后 |
4.6.3 核心指令速查
4.6.3.1 命令模式(移动与编辑)
| 指令 | 分类 | 含义 |
|---|---|---|
gg |
光标移动 | 跳转到文件首行 |
G |
光标移动 | 跳转到文件末行 |
:n |
光标移动 | 跳转到第 n 行(如 :10 跳至第10行) |
i / a / o |
进入插入 | i:光标前插入;a:光标后插入;o:下一行新建插入 |
dd |
删除行 | 删除光标所在行 |
ndd |
删除行 | 删除光标所在行及下方共 n 行 |
yy |
复制行 | 复制光标所在行(nyy 复制 n 行) |
p / P |
粘贴 | p:粘贴到光标下方;P:粘贴到光标上方 |
u / Ctrl+r |
撤销恢复 | u:撤销上一步;Ctrl+r:重做 |
x / dw |
删除字符 | x:删除光标处字符;dw:删除光标处单词 |
4.6.3.2 底行模式(文件操作与配置)
| 指令 | 分类 | 含义 |
|---|---|---|
:w |
保存退出 | 仅保存,不退出 |
:q |
保存退出 | 仅退出(未修改时可用) |
:wq / :x |
保存退出 | 保存并退出(最常用) |
:q! |
强制操作 | 不保存强制退出(丢弃修改) |
:wq! |
强制操作 | 强制保存并退出(需 root 权限覆盖只读文件) |
:set nu / :set nonu |
显示设置 | 显示/取消行号 |
:set paste |
显示设置 | 开启粘贴模式(防止粘贴代码时自动缩进错乱) |
:/关键词 |
查找 | 向下搜索关键词(按 n 下一个,N 上一个) |
:%s/旧/新/g |
全局替换 | 将全文中的"旧"替换为"新" |
📌 记忆口诀:
- 编辑先按
i,保存退出:wq,不保存跑:q!- 移动用
gg/G,删除复制dd/yy,粘贴靠p- 不确定当前模式?连按两次
ESC保底回命令模式
4.7 查找命令
4.7.1 find ------ 按文件名/属性查找
find 是 Linux 中最强大的文件搜索工具,支持按名称、类型、大小、时间、权限等多种条件进行递归搜索。
4.7.1.1 命令语法
bash
find [搜索路径] [选项] [表达式]
4.7.1.2 常用选项与表达式
| 选项/表达式 | 说明 | 示例 |
|---|---|---|
-name |
按文件名 查找(支持通配符 * ?) |
-name "*.log" |
-iname |
按文件名 查找,忽略大小写 | -iname "ReadMe" |
-type |
按文件类型查找 f=普通文件, d=目录, l=链接 |
-type f (只找文件) |
-size |
按文件大小查找 +n=大于, -n=小于, n=等于 单位:c(字节), k, M, G |
-size +100M (大于100M) |
-mtime |
按修改时间查找(天) +n=n天前, -n=n天内 |
-mtime -7 (最近7天修改) |
-perm |
按权限查找 | -perm 755 |
-exec |
对查找结果执行后续命令 | -exec rm {} \; |
4.7.1.3 常见用法示例
bash
# 1. 在当前目录及子目录查找所有 .log 文件
find . -name "*.log"

bash
# 2. 在指定目录查找特定文件(忽略大小写)
find /root -iname "start-ens33.sh"

"注:以下内容属于进阶用法,了解其功能与应用场景即可,无需刻意背诵。"
bash
# 3. 查找当前目录下所有"目录"
find . -type d
bash
# 4. 查找大于 100MB 的文件(清理磁盘空间常用)
find /var/log -size +100M
bash
# 5. 查找最近 7 天内修改过的 .log 文件
find . -name "*.log" -mtime -7
bash
# 6. 查找并删除所有 .tmp 临时文件(⚠️ 危险操作,建议先不加 -exec 确认)
find . -name "*.tmp" -exec rm -f {} \;
💡 技巧提示:
{}代表find找到的每一个文件路径。\;是-exec的固定结束符,必须保留。- 生产环境删除前,建议先用
ls或echo替换rm进行预演。
4.7.2 grep ------ 按文本内容查找
grep (Global Regular Expression Print) 用于在文件中搜索包含特定字符串或正则表达式的行,是日志分析和代码检索的神器。
4.7.2.1 命令语法
bash
grep [选项] [匹配模式] [文件...]
4.7.2.2 常用选项
| 选项 | 全称 | 说明 |
|---|---|---|
-i |
ignore-case | 忽略大小写 |
-n |
line-number | 显示匹配行的行号 |
-v |
invert-match | 反向选择 ,显示不包含匹配内容的行 |
-c |
count | 仅显示匹配的行数统计 |
-A n |
After | 显示匹配行及其后 n 行(查看上下文) |
-B n |
Before | 显示匹配行及其前 n 行 |
-C n |
Context | 显示匹配行及其前后各 n 行 |
-r |
recursive | 递归搜索目录下的所有文件 |
-E |
extended-regexp | 使用扩展正则表达式 |
4.7.2.3 常见用法示例
bash
# 1. 在单个文件中查找关键词
grep "Hello" hello.java

bash
# 2. 在所有 .java 文件中查找关键词(忽略大小写 + 显示行号)
grep -in "hello" *.java

"注:以下内容属于进阶用法,了解其功能与应用场景即可,无需刻意背诵。"
bash
# 3. 查看日志中报错信息及前后上下文(排查问题最常用)
# 显示包含 "ERROR" 的行,以及其前后各 5 行
grep -C 5 "ERROR" app.log
bash
# 4. 递归搜索整个项目目录中的关键词
# 在 /project/src 目录下查找所有包含 "main" 的文件
grep -rn "main" /project/src
bash
# 5. 过滤掉注释行和空行(查看纯净配置)
grep -v "^#" config.txt | grep -v "^$"
4.7.3 find vs grep 对比总结
| 特性 | find |
grep |
|---|---|---|
| 搜索对象 | 文件名、属性(大小、时间、权限) | 文件内容(文本字符串、正则) |
| 典型场景 | 找"哪个文件叫 xxx?" 找"哪些文件超过 1GB?" | 找"哪行代码写了 xxx?" 找"日志里哪里报错了?" |
| 组合使用 | find . -name "*.log" -exec grep "Error" {} \; |
先 find 定位文件,再 xargs grep 搜内容 |
4.8 文件创建命令
在 Linux 中,创建文件有多种方式。除文本编辑器(如 vim)外,命令行提供了更快捷的非交互式创建方法,适合脚本编写、批量初始化和自动化运维。
4.8.1 touch ------ 创建空文件或更新时间戳
touch 是最安全的文件创建命令,专为生成空文件 或刷新文件时间属性设计。
4.8.1.1 命令语法
bash
touch [选项] 文件名
4.8.1.2 常用选项
| 选项 | 说明 |
|---|---|
-a |
仅更新访问时间(Access Time) |
-m |
仅更新修改时间(Modify Time) |
-c |
不创建新文件。若文件不存在则不报错,仅更新已存在文件的时间 |
-t |
指定时间戳创建/修改(格式:[[CC]YY]MMDDhhmm[.ss]) |
4.8.1.3 常见用法示例
bash
# 1. 创建单个空文件
touch hello.txt

bash
# 2. 同时创建多个文件
touch index.html style.css app.js

bash
# 3. 文件已存在时,仅刷新修改时间(不覆盖内容)
touch style.txt

💡 核心特性:
touch绝不会覆盖已有文件内容,安全性极高。- 常用于脚本中初始化日志文件、占位文件,或更新缓存时间戳。
4.8.2 echo + 重定向 ------ 创建文件并写入内容
echo 本身用于输出文本,结合重定向符号可快速创建含初始内容的文件,是 Shell 脚本的标配。
4.8.2.1 命令语法
bash
echo [选项] "内容" > 文件名 # 覆盖写入
echo [选项] "内容" >> 文件名 # 追加写入
4.8.2.2 常用选项与符号
| 选项/符号 | 说明 |
|---|---|
> |
覆盖重定向:清空原文件内容后写入(⚠️ 谨慎使用) |
>> |
追加重定向:在文件末尾追加新内容 |
-n |
输出时不自动换行 |
-e |
启用转义字符(如 \n 换行、\t 制表符) |
4.8.2.3 常见用法示例
bash
# 1. 创建文件并写入单行内容
echo "Hello Linux" > greeting.txt

bash
# 2. 追加内容到文件末尾(保留原有数据)
echo "Second line" >> greeting.txt

bash
# 3. 追加多行内容(结合换行符)
echo -e "Line 1\nLine 2\nLine 3" >> greeting.txt

bash
# 4. 创建空文件(等价于 touch)
> empty.txt

⚠️ 避坑指南:
>会瞬间清空目标文件,对重要文件操作前务必确认路径。- 变量展开差异 :
echo "Today is $(date)" > log.txt→ 写入当前时间(双引号支持变量/命令替换)echo 'Today is $(date)' > log.txt→ 原样输出字符串(单引号屏蔽解析)
4.8.3 命令对比与选型建议
| 命令 | 适用场景 | 是否覆盖原文件 | 是否显示终端 |
|---|---|---|---|
touch |
创建空文件、更新时间戳 | ❌ 仅刷新时间 | ❌ |
echo > |
快速写入单行/简单配置 | ✅ 覆盖 | ❌ |
echo >> |
日志追加、配置文件增量修改 | ❌ 追加 | ❌ |
📌 选型口诀:
- 只要空文件 →
touch- 写配置/日志 →
echo >>- 不确定用哪个?
echo最灵活,touch最安全。
5. 软件安装实战
5.1 软件安装方式概览
| 方式 | 说明 | 适用场景 |
|---|---|---|
| 二进制发布包 | 已编译好的包,解压配置即可 | JDK、Tomcat等 |
| RPM包 | Red-Hat Package Manager,类似Windows安装包 | 有现成RPM包的软件 |
| YUM安装 | 在线安装,自动解决依赖 | 常用工具、依赖库 |
| 源码编译 | 下载源码,自行编译安装 | Nginx等需要定制的组件 |
5.2 安装 JDK(二进制发布包方式)
📦 前置准备
请确保已下载好 JDK 安装包(例如:
jdk-21_linux-x64_bin.tar.gz)。
5.2.1 上传安装包
使用 FinalShell ,将本地的 JDK 压缩包上传至 Linux 服务器的 /root 目录。
- 操作 :打开 FinalShell 的文件管理面板,将本地下载好的
jdk-21_linux-x64_bin.tar.gz文件直接拖拽 到左侧文件列表区域(即/root目录)。


- 验证:上传完成后,在终端切换到上传目录查看文件是否存在。
bash
# 切换到 /root 目录
cd /root
# 查看上传的文件(确认文件已存在)
ll

5.2.2 解压安装包
使用 tar 命令将压缩包解压到指定的系统软件目录 /usr/local 下。
bash
# 解压命令:tar -zxvf [文件名] -C [目标目录]
tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/
💡 参数解析:
-z:调用 gzip 解压-x:解压(extract)-v:显示过程(verbose)-f:指定文件(file)-C(大写) :指定解压目录(必须使用绝对路径,且目录需已存在)



5.2.3 配置环境变量
为了让系统全局识别 java 命令,需要将 JDK 路径配置到环境变量文件中。
核心配置内容:
bash
export JAVA_HOME=/usr/local/jdk-21.0.10
export PATH=$JAVA_HOME/bin:$PATH
具体操作步骤(vim 编辑器):
-
编辑文件 :进入命令模式
bashvim /etc/profile -
跳转末尾 :在命令模式下,按
G键快速跳转到文件最后一行。 -
进入编辑 :按
i键(或o)进入插入模式,在文件末尾空一行,粘贴上述配置。bash# 粘贴内容 export JAVA_HOME=/usr/local/jdk-21.0.10 export PATH=$JAVA_HOME/bin:$PATH -
保存退出 :
- 按
ESC键退出编辑模式。 - 按
:进入底行模式,输入wq并回车保存。
- 按

5.2.4 重新加载配置
修改 /etc/profile 后,配置不会立即在当前终端生效,需要执行 source 命令重新加载。
bash
# 使环境变量立即生效
source /etc/profile

🔄 补充 :如果
source无效,可尝试断开当前终端连接并重新登录。
5.2.5 验证安装
执行 java -version 检查是否安装成功。如果输出如下 JDK 版本信息,则说明安装配置完成。
bash
java -version

5.3 安装 MySQL(二进制发布包方式)
📦 前置准备
请确保已下载好 MySQL 安装包(例如:
mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz)。⚠️ 重要提示 :
安装前需检查并卸载系统中可能存在的 MySQL 或 MariaDB 冲突组件,否则会导致安装失败。
5.3.1 卸载冲突组件
CentOS 7 系统默认安装了 MariaDB(MySQL 的分支),与 MySQL 存在冲突,必须先卸载。
5.3.1.1 检查已安装的数据库组件
bash
# 检查是否存在 MySQL 相关组件
rpm -qa | grep mysql
# 检查是否存在 MariaDB 相关组件(CentOS 7 默认自带)
rpm -qa | grep mariadb
输出示例:
text
mariadb-libs-5.5.60-1.el7_5.x86_64
💡 参数解析:
rpm -qa:查询系统所有已安装的 RPM 包(query all)| grep xxx:通过管道过滤,只显示包含关键词的行
5.3.1.2 卸载冲突的 MariaDB
如果上一步查询到 mariadb-libs,必须执行卸载:
bash
# 强制卸载 mariadb-libs(--nodeps 表示不检查依赖关系)
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
验证卸载结果:
bash
# 再次查询,若无输出则表示卸载成功
rpm -qa | grep mariadb
⚠️ 注意事项:
--nodeps参数会强制卸载,不检查其他软件是否依赖该包- 卸载后建议重启终端或执行
source /etc/profile刷新环境
5.3.2 上传并解压安装包
5.3.2.1 上传安装包
使用 FinalShell 的拖拽上传 功能,将 MySQL 压缩包上传至 /root 目录。
bash
# 切换到上传目录并验证
cd /root
ls -lh mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
5.3.2.2 解压安装包
MySQL 安装包为 .tar.xz 格式,使用 tar -xvf 命令解压(无需 -z 参数)。
bash
# 解压到当前目录
tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
💡 参数解析:
-x:解压(extract)-v:显示过程(verbose)-f:指定文件(file)- 注意 :
.xz格式不需要-z参数,tar 会自动识别
5.3.2.3 移动并重命名
将解压后的目录移动到 /usr/local 下,并重命名为 mysql(方便后续管理)。
bash
# 移动到 /usr/local 并重命名为 mysql
mv mysql-8.0.30-linux-glibc2.12-x86_64 /usr/local/mysql
# 切换到 MySQL 安装目录
cd /usr/local/mysql
5.3.3 配置环境变量与系统服务
5.3.3.1 配置环境变量
编辑 /etc/profile 文件,添加 MySQL 的环境变量。
bash
# 使用 vim 编辑文件
vim /etc/profile
在文件末尾追加以下内容:
bash
# MySQL 环境变量配置
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
使配置立即生效:
bash
source /etc/profile
5.3.3.2 注册为系统服务
将 MySQL 注册为系统服务,方便使用 systemctl 管理。
bash
# 复制 MySQL 服务脚本到 /etc/init.d 并命名为 mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 添加服务到系统(chkconfig)
chkconfig --add mysql
💡 说明:
/etc/init.d/mysql:系统服务脚本位置chkconfig --add mysql:将 mysql 添加到系统服务列表,支持开机启动
5.3.4 初始化数据库
5.3.4.1 创建 MySQL 用户和组
出于安全考虑,MySQL 不应使用 root 用户运行,需创建专用的 mysql 用户。
bash
# 创建 mysql 用户组
groupadd mysql
# 创建 mysql 用户并加入 mysql 组
# -r:创建系统用户
# -g:指定所属组
# -s /bin/false:禁止登录 shell
useradd -r -g mysql -s /bin/false mysql
💡 参数解析:
useradd -r:创建系统账号(UID < 1000,无法登录系统)-s /bin/false:禁止该用户通过 shell 登录,增强安全性
5.3.4.2 初始化数据库
执行初始化命令,生成系统表、默认用户等基础数据。
bash
# 初始化数据库(⚠️ 务必复制输出的临时密码)
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
输出示例(重点看最后一行):
text
2024-01-15T10:30:45.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: abc123!@#xyz
⚠️ 关键提示:
- 务必复制临时密码 (如
abc123!@#xyz),首次登录必须使用--basedir:MySQL 安装目录--datadir:数据存储目录(会自动创建)--user=mysql:指定运行用户
5.3.4.3 设置目录权限
初始化完成后,必须将数据目录的所有权授予 mysql 用户,否则 MySQL 服务将无法启动。
bash
# 设置 MySQL 数据目录所有权(⚠️ 必须执行)
chown -R mysql:mysql /usr/local/mysql/data
# 验证权限设置
ls -l /usr/local/mysql/
💡 说明:
chown -R:递归修改目录及其子文件的所有者mysql:mysql:格式为用户:用户组- 若不执行此步骤,
systemctl start mysql会因权限不足而失败
5.3.5 启动服务与配置
5.3.5.1 启动 MySQL 服务
bash
# 启动 MySQL 服务
systemctl start mysql
# 查看服务状态(可选)
systemctl status mysql

5.3.5.2 登录 MySQL
使用初始化时生成的临时密码登录。
bash
# 登录命令(提示密码时输入临时密码)
mysql -uroot -p

5.3.5.3 修改 root 密码
首次登录必须修改 root 密码,否则无法执行其他操作。
sql
-- 修改 root@localhost 的密码为 '159357258'
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '159357258';

💡 说明:
mysql_native_password:使用 MySQL 原生密码认证插件(兼容性好)- 密码
159357258仅为示例,生产环境请使用强密码
5.3.5.4 创建远程访问账号
默认 root 用户只能从 localhost 登录,若需从 Windows 或其他服务器连接,需创建远程账号。
sql
-- 创建 root@'%' 用户(% 表示允许任意 IP 连接)
CREATE USER 'root'@'%' IDENTIFIED BY '159357258';
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
-- 刷新权限使配置生效
FLUSH PRIVILEGES;

⚠️ 安全警告:
root@'%'允许任意 IP 连接,生产环境不建议使用- 建议创建专用账号并限制特定 IP 段访问
- 示例:
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'strong_password';
5.4 防火墙操作
Linux 系统的防火墙(firewalld)默认拦截所有入站连接 。若需从 Windows 或其他服务器访问 MySQL,必须开放 3306 端口。
5.4.1 防火墙常用指令
| 操作 | 指令 |
|---|---|
| 查看防火墙状态 | systemctl status firewalld 或 firewall-cmd --state |
| 暂时关闭防火墙 | systemctl stop firewalld |
| 永久关闭防火墙 | systemctl disable firewalld |
| 开放指定端口 | firewall-cmd --zone=public --add-port=3306/tcp --permanent |
| 关闭指定端口 | firewall-cmd --zone=public --remove-port=3306/tcp --permanent |
| 重新加载配置 | firewall-cmd --reload |
| 查看开放端口 | firewall-cmd --zone=public --list-ports |
💡 参数解析:
--zone=public:指定作用区域(public 为公共区域)--permanent:永久生效(重启后仍保留),需配合--reload使用--add-port=3306/tcp:添加 TCP 协议的 3306 端口
5.4.2 推荐做法:开放 3306 端口
不建议完全关闭防火墙,应仅开放必要端口。
bash
# 1. 开放 3306 端口(永久生效)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 2. 重新加载防火墙配置
firewall-cmd --reload
# 3. 验证端口是否已开放
firewall-cmd --zone=public --list-ports

5.4.3 备选方案:关闭防火墙(仅测试环境)
若为本地测试环境,可直接关闭防火墙简化操作。
bash
# 1. 停止防火墙服务
systemctl stop firewalld
# 2. 禁止防火墙开机自启
systemctl disable firewalld
# 3. 验证状态(应显示 inactive)
systemctl status firewalld

⚠️ 生产环境警告:
- 严禁关闭防火墙!应仅开放必要端口(3306、80、443 等)
- 关闭防火墙会导致服务器暴露在所有网络攻击下
- 建议使用安全组、iptables 等多层防护
5.4.4 连接测试
完成防火墙配置后,可从 Windows 使用 MySQL 客户端或 DataGrip 工具连接。
5.4.4.1 客户端连接
bash
# Windows 命令行测试(需安装 MySQL 客户端)
mysql -h192.168.100.128 -p3306 -uroot -p159357258

🔍 排查指南:
- 若连接超时 → 检查防火墙是否开放 3306
- 若提示
Access denied→ 检查 MySQL 用户权限(SELECT user, host FROM mysql.user;)- 若提示
Can't connect→ 检查 MySQL 服务是否启动(systemctl status mysql)
5.4.4.2 DataGrip 图形化工具连接
使用命令行虽然通用,但在日常开发中,使用 DataGrip 等图形化工具管理数据库更加直观高效。以下是连接 Linux 中 MySQL 并初始化数据的完整流程。
5.4.4.2.1 新建数据源
打开 DataGrip,在左侧 数据库(Database) 面板中,点击 + 号,依次选择 Data Source -> MySQL。

💡 提示 :
如果是首次连接,DataGrip 可能会提示下载 MySQL 驱动程序,点击 Download 自动下载即可。
5.4.4.2.2 配置连接信息
在弹出的配置窗口中,填写 Linux 服务器的连接信息:
| 配置项 | 填写内容 | 说明 |
|---|---|---|
| 名称 (Name) | Linux-MySQL |
自定义连接名称,方便识别 |
| 主机 (Host) | 192.168.100.128 |
Linux 虚拟机的 IP 地址(需确保网络互通) |
| 端口 (Port) | 3306 |
MySQL 默认端口 |
| 用户 (User) | root |
之前创建的远程访问账号 |
| 密码 (Password) | 159357258 |
之前设置的 root 密码 |
关键操作:
- 填写完毕后,点击左下角的 测试连接 (Test Connection)。
- 若显示绿色对勾及 "MySQL" 字样,表示连接成功。
- 点击右下角的 应用 (Apply) 和 确定 (OK) 保存配置。

⚠️ 常见报错排查:
- Connection refused:检查 Linux 防火墙是否开放 3306 端口,或 MySQL 服务是否启动。
- Access denied :检查用户名密码是否正确,或是否创建了
root@'%'远程用户。
5.4.4.2.3 运行 SQL 脚本(初始化数据)
连接成功后,需要执行课程提供的 SQL 脚本来创建数据库和表。
- 在左侧面板右键点击新建的
Linux-MySQL数据源。 - 选择 SQL 脚本 -> 运行 SQL 脚本... (Run SQL Script...)。
- 在文件选择框中,找到并选中课程资料提供的
tlias.sql文件。 - 点击 OK 执行。

5.4.4.2.4 验证结果
脚本执行完毕后,观察左侧数据库列表和右侧数据预览:
- 查看库表结构 :左侧列表应出现
tlias数据库,展开后包含clazz(班级)、dept(部门)、emp(员工)等表。 - 查看数据 :双击任意表(如
clazz),右侧窗口应显示表中的测试数据。 - 查看日志 :底部控制台应显示绿色的执行成功日志(如
4 行受到影响)。

结论 :
此时,你的开发工具已成功连接到 Linux 中的 MySQL,且项目所需的基础数据已准备就绪,可以开始后续的 Java 开发了!
5.5 安装 Nginx(源码编译方式)
与 JDK、MySQL 的二进制安装不同,Nginx 通常采用源码编译方式安装。这种方式可以自定义功能模块,灵活适配不同场景需求。
📦 前置准备
- 已下载 Nginx 源码包(例如:
nginx-1.20.2.tar.gz)- 服务器具备网络连接(需下载编译依赖)
- 具备
root权限
5.5.1 安装编译依赖
源码编译前,需安装 Nginx 运行所需的依赖库及 C++ 编译环境。
5.5.1.1 安装 Nginx 依赖库
bash
# 安装 PCRE(正则表达式库,用于 rewrite 模块)
# 安装 zlib(压缩库,用于 gzip 压缩)
# 安装 OpenSSL(加密库,用于 HTTPS 支持)
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
💡 依赖说明:
pcre/pcre-devel:支持 URL 重写(rewrite)功能zlib/zlib-devel:支持 HTTP 响应压缩(gzip)openssl/openssl-devel:支持 HTTPS/SSL 加密传输
5.5.1.2 安装 C++ 编译器
Nginx 使用 C 语言编写,需安装 GCC 编译环境。
bash
# 安装 GCC C++ 编译器
yum install gcc-c++ -y
验证编译器是否安装成功:
bash
# 查看 GCC 版本
gcc --version

5.5.2 上传并解压源码包
5.5.2.1 上传源码包
使用 FinalShell 拖拽上传 nginx-1.20.2.tar.gz 至 /root 目录。

bash
# 切换到上传目录并验证
cd /root
ls -lh nginx-1.20.2.tar.gz

5.5.2.2 解压源码包
bash
# 解压源码包到当前目录
tar -zxvf nginx-1.20.2.tar.gz
# 进入解压后的源码目录
cd nginx-1.20.2
# 查看源码目录结构
ll


📂 关键文件说明:
configure:配置脚本,用于生成 Makefilesrc/:Nginx 核心源码html/:默认网页文件(欢迎页面)
5.5.3 配置编译选项
执行 ./configure 脚本,检查系统环境并生成 Makefile 文件。
bash
# 配置编译选项(指定安装目录)
./configure --prefix=/usr/local/nginx
💡 参数解析:
--prefix=/usr/local/nginx:指定 Nginx 安装目录(后续所有文件将安装至此)常用编译选项(可选):
--with-http_ssl_module:启用 HTTPS 支持--with-http_gzip_static_module:启用 gzip 静态压缩--with-stream:启用 TCP/UDP 代理支持--with-http_stub_status_module:启用状态监控模块

⚠️ 若配置报错:
- 提示
PCRE library not found→ 检查是否安装pcre-devel- 提示
SSL library not found→ 检查是否安装openssl-devel- 提示
zlib library not found→ 检查是否安装zlib-devel
5.5.4 编译与安装
5.5.4.1 编译源码
bash
# 编译源码(生成可执行文件)
make

编译过程:
- 耗时约 1-3 分钟(取决于服务器性能)
- 无错误输出表示编译成功
- 最后显示
make[1]: Leaving directory表示完成
5.5.4.2 安装到指定目录
bash
# 将编译好的文件安装到 --prefix 指定的目录
make install

验证安装结果:
bash
# 查看 Nginx 安装目录结构
cd /usr/local/nginx/
ll

📂 关键目录说明:
conf/:主配置文件(修改端口、虚拟主机等)html/:默认网站根目录(放置网页文件)logs/:访问日志和错误日志sbin/:Nginx 可执行文件
5.5.5 启动 Nginx 与验证
5.5.5.1 启动服务
进入安装目录并执行启动命令:
bash
# 1. 切换到 Nginx 安装目录
cd /usr/local/nginx/
# 2. 启动 Nginx 服务
sbin/nginx
💡 提示:若命令执行后无任何提示直接返回命令行,通常表示启动成功。
5.5.5.2 配置防火墙(开放 80 端口)
Nginx 默认使用 80 端口,需配置防火墙允许外部访问,否则浏览器无法连接。
bash
# 1. 开放 80 端口(--permanent 表示永久生效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 2. 重新加载防火墙配置(使永久配置立即生效)
firewall-cmd --reload
# 3. 验证端口是否已开放(应看到 80/tcp)
firewall-cmd --zone=public --list-ports

5.5.5.3 验证安装结果
打开浏览器,访问服务器 IP 地址:
text
http://192.168.100.128
成功标志:看到 "Welcome to nginx!" 欢迎页面:

此时 Nginx 已成功安装并运行,可以进行后续的 Web 服务配置了。
5.5.6 Nginx 常用管理命令
| 操作 | 命令 | 说明 |
|---|---|---|
| 启动 | /usr/local/nginx/sbin/nginx |
启动 Nginx 服务 |
| 停止 | /usr/local/nginx/sbin/nginx -s stop |
立即停止(不等待请求完成) |
| 优雅停止 | /usr/local/nginx/sbin/nginx -s quit |
等待当前请求完成后停止(推荐) |
| 重载配置 | /usr/local/nginx/sbin/nginx -s reload |
修改配置后无需重启,平滑重载 |
| 测试配置 | /usr/local/nginx/sbin/nginx -t |
检查配置文件语法是否正确 |
| 查看版本 | /usr/local/nginx/sbin/nginx -v |
显示 Nginx 版本信息 |
💡 最佳实践:
- 修改配置后务必 先执行
nginx -t测试语法- 使用
reload而非stop + start,避免服务中断- 生产环境建议配置开机自启(systemd 服务)
