专栏:JavaEE 进阶跃迁营

个人主页:手握风云

目录

一、Linux 背景知识

1.1. Linux 是什么

1.2. Linux 发展历程

1.3. Linux 发行版

1.4. Linux 的优势

二、Linux 环境的搭建

2.1. 云服务器购买

2.2. 使用终端软件连接 Linux

三、Linux 常用命令

3.1. 目录 / 文件基础操作

3.2. 文本查看 / 编辑

3.3. 查找 / 进程 / 网络操作

3.4. 管道符

四、搭建 Java 部署环境

4.1. apt

4.2. JDK


一、Linux 背景知识

1.1. Linux 是什么

        Linux 并非仅仅是一个普通的软件,它是一套自由传播且功能强大的类 Unix 操作系统。在计算机的世界里,它与 Windows 处于“并列”的地位,但其应用场景更为广泛。严格来说,Linux 这个词指的是操作系统的内核,而我们日常使用的完整系统是由内核加上 GNU 项目提供的各种配套工具(如编译器、库、Shell)以及应用程序共同构成的。进入 2026 年,Linux 已然成为支撑全球数字基础设施的核心,从大型云数据中心、超级计算机,到我们手中的安卓手机,其内核无处不在。

1.2. Linux 发展历程

        Linux 的血脉可以追溯到 1969 年至 1970 年间的贝尔实验室。当时,肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)为了开发 Unix 操作系统,发现当时的编程语言并不理想,于是“顺便”发明了 C 语言。这一举动不仅为 Unix 奠定了基础,也改变了整个计算机科学的走向。Unix 后来衍生出许多分支,其中最为关键的一支是荷兰教授安德鲁·塔能鲍姆(Andrew S. Tanenbaum)开发的 Minix 系统。Minix 虽小,却承载着教学和研究的重任,也正是它启发了后来 Linux 的诞生。

        1991 年,年仅 22 岁的芬兰大学生林纳斯·托瓦兹(Linus Torvalds)基于对 Minix 的兴趣,开发出了 Linux 的第一个版本。起初,这只是他在 Usenet 论坛上宣称的一个“小小的、不会像 GNU 那样专业”的业余爱好,但他将代码开源并邀请全球开发者共同参与的举动,点燃了开源运动的火炬。值得一提的是,林纳斯在开发过程中因为不满现有的版本管理工具,还随手创造了现今全球最流行的 Git。即便到了 2026 年,这位被誉为“开源教皇”的先驱依然在互联网上保持活跃,并拥有对内核代码合并的最高裁定权。

1.3. Linux 发行版

        由于 Linux 内核是完全开源且免费的,不同的组织和公司基于内核打包了不同的软件和工具,形成了丰富多样的“发行版”。企业级应用中,RedHat 以其稳定性著称,而其社区版本 CentOS 曾广受欢迎。然而,随着 CentOS 停止维护,Ubuntu 已成为开发者和学术界的首选。在 2026 年的最新趋势中,我们看到像 Rocky Linux、AlmaLinux 等后起之秀在数据中心占据一席之地,而像 Ubuntu 26.04 LTS 这样的系统已经开始大规模适配 RISC-V 开放指令集架构,推动了硬件与软件的同步革新。

1.4. Linux 的优势

  1. 开源免费,用户可以自由获取源代码并根据需求修改定制;
  2. 高度可定制,能根据不同的应用场景进行深度优化;
  3. 稳定性强,长时间运行不易崩溃;
  4. 安全性高,具备严格的权限管理和访问控制。

二、Linux 环境的搭建

2.1. 云服务器购买

        使用云服务器, 可以直接在腾讯云、阿里云或华为云等服务器厂商处直接购买⼀个云服务器。使用云服务器不仅环境搭建简单,避免折腾。同时还有⼀个最大的好处,部署在云服务器上的项目可以直接被外网访问到,这个时候就和⼀个公司发布⼀个正式的⽹站没有任何区别,也就能让我们自己写的程序真的去给别人去使用。

        我们访问阿里云服务器的网址,https://www.aliyun.com/product/ecs,进入之后,个人学习推荐2核2G的即可,如果是第一次购买,第一台只需 99 元 / 年。

        购买好之后,我们来到云服务器管理控制台页面,可以查看自己的公网 IP。服务器的管理员账号默认为 root,管理员密码自己设置,如果忘记,可以重置。

2.2. 使用终端软件连接 Linux

        终端软件是⼀类工具软件,可以和远程的主机建立网络连接,从而对主机进行一些操作。XShell 的下载地址:https://www.xshell.com/zh/free-for-home-school/

        下载好之后,点击新建会话,设置好名称和主机之后,点击用户身份验证,填好用户名和密码之后,就建立好了连接。

三、Linux 常用命令

        Linux 以命令行操作为主,优势是节省资源 / 带宽、便于批量执行任务。

3.1. 目录 / 文件基础操作

        ls 是 Linux 中最基础的目录 / 文件查看命令,用于列出指定目录或文件的相关信息,是日常操作 Linux 的高频命令。语法:ls [选项] [目录或文件]。若参数为目录,列出该目录下的所有子目录与文件;若参数为文件,列出该文件的文件名及相关属性信息。

  • -a:列出目录下的所有文件,包含以 . 开头的隐藏文件(Linux 中隐藏文件以点开头);
  • -d:将目录当作文件本身显示,而非列出其下的文件 / 子目录;
  • -k:以千字节(k)为单位表示文件的大小;
  • -l:列出文件 / 目录的详细信息(如权限、所有者、大小、修改时间等),是最常用的选项之一;
  • -r:对目录中的内容进行反向排序;
  • -t:按照文件 / 目录的修改时间进行排序;
  • -R:递归列出所有子目录下的文件,即遍历显示多级目录内容。

        pwd 是 Linux 中用于确认当前工作目录的基础命令,是日常操作中快速定位自身在 Linux 树形目录结构中位置的高频命令,无额外可选参数,使用方式简单。

        cd 是 Linux 中用于切换工作目录的基础命令,是操作 Linux 树形目录结构的核心命令,配合绝对 / 相对路径及特殊目录标识,可灵活在不同目录间跳转。语法:cd 目录名(目录名可填绝对路径、相对路径,也可使用特殊目录标识)。下面是常用使用示例:

  • cd ..:返回当前目录的上级目录(.. 为上级目录的专属标识);
  • cd ~ / 直接输入cd:快速进入当前用户的家目录;
  • cd -:返回上一次所处的工作目录;
  • cd /usr/local:通过绝对路径跳转到根目录下的 usr/local 目录;
  • cd ./test:通过相对路径跳转到当前目录下的 test 子目录(. 为当前目录的专属标识)。

        touch 命令:修改文档 / 目录的存取时间和更改时间,或者快速新建不存在的空文件;

touch [选项]... 文件... #语法
touch test.txt
ls -l
Mar 11 16:00 test.txt

        mkdir 命令:核心功能是在当前工作目录下创建指定名称的目录;-p/--parents:支持创建多级目录,若路径中部分目录不存在,系统会自动依次创建。

mkdir [选项] dirname... #语法

        rm 命令:核心功能是删除 Linux 系统中的文件或目录,是高频的删除操作命令;

rm [-f-i-r-v] [文件 / 目录名] #语法
  • -f:强制删除,即使文件为只读属性,也直接删除且不提示;
  • -i:交互式删除,删除前逐一询问确认,防止误删;
  • -r:递归删除,用于删除目录,会同时删除目录及其下所有文件 / 子目录。
rm test.txt  # 删除当前目录下的test.txt文件
rm -ri test  # 递归且交互式删除test目录及其中所有内容

        注意:严禁在生产服务器运行 rm -rf/,该命令会递归强制删除根目录下所有文件,直接导致系统崩溃。

        cp 命令:;核心功能是复制文件或目录到指定位置,若指定多个源文件,最后一个目标必须是已存在的目录,否则会报错。

cp [选项] 源文件 / 目录 目标文件 / 目录 #语法
  • -f:强行复制,无论目标文件 / 目录是否存在,直接覆盖;
  • -i:交互式复制,覆盖目标文件前先询问用户;
  • -r/R:递归处理,复制目录时,会将目录下的所有文件、子目录一并复制。
cp test1.txt test2.txt  # 将test1.txt复制为当前目录下的test2.txt
cp -r test1 test2  # 将test1目录及其中所有内容递归复制到test2目录

        mv 命令:核心功能是根据目标参数类型,实现文件 / 目录重命名或文件 / 目录移动,是 Linux 中移动 / 重命名的核心命令。若目标是未存在的文件 / 目录名:完成重命名;若目标是已存在的目录:将所有源文件 / 目录移动到该目标目录中。

mv [选项] 源文件 / 目录 目标文件 / 目录 #语法
  • -f:强制操作,若目标文件已存在,直接覆盖且不提示
  • -i:交互式操作,若目标文件已存在,先询问是否覆盖

3.2. 文本查看 / 编辑

        cat 命令:语法,cat [选项] [文件];核心功能是查看目标文件的内容。-n:对输出的所有行编号。

cat test.txt #直接查看文件
cat -n test.txt #查看文件并给行编号

        tail 命令:语法,tail [必要参数] [选择参数] [文件];核心功能是显示指定文件的末尾内容,若不指定文件则处理输入信息,最常用于实时查看日志文件。

  • -f:循环读取文件内容(实时监控,文件更新时会同步输出新内容)
  • -n <行数>:指定显示文件末尾的具体行数。举例:显示 test1.txt 文件末尾 10 行内容:tail -10 test1.txt

        vim 命令:vim 是 Linux 中常用的文本编辑器,功能远多于 Windows 记事本,核心操作围绕模式切换展开(默认打开为普通模式,需切换插入模式才能编辑)。核心功能是创建新文件、打开已有文件并进行文本编辑、保存 / 退出文件。

        关键操作步骤:

  1. 创建 / 打开文件:vim [文件名](文件不存在则创建,存在则打开);
  2. 进入插入模式:普通模式下按i键,左下角出现--INSERT--标识,即可正常编辑文本;
  3. 保存文件:按Esc回到普通模式,输入:w并回车;
  4. 退出文件(需先回到普通模式):
  • 文件未修改:输入:q回车;
  • 文件修改并保存:输入:wq回车;
  • 文件修改但不保存:输入:q!回车(强制退出)。补充:输入vimtutor可进入 vim 官方教程,学习更多高级用法。

3.3. 查找 / 进程 / 网络操作

        grep 命令:核心功能是在指定文件 / 输入内容中查找包含指定字符串的内容,并显示匹配结果所在的行,是 Linux 中最常用的文本搜索过滤工具,支持多文件、递归搜索、精准匹配等特性。

grep [参数]... [匹配字符串] [文件]...
选项 功能说明
-n 显示匹配结果所在的行号,便于定位内容
-w 全字匹配,要求整个单词与搜索字符串完全一致,避免部分匹配(如搜java不匹配javac
-r 递归查找,遍历指定目录下的所有多级子目录和文件,无需逐个指定文件
--color 对查找结果的匹配字符串进行高亮显示,提升可读性
--include 指定只查找某类文件(如--include=*.java仅搜索 java 文件)
--exclude 指定排除某类文件(如--exclude=*.log不搜索日志文件)
grep "hello" Hello.java #在 Hello.java 文件中查找包含 hello 字符串的行
grep -n "hello" Hello.java #查找并显示匹配行的行号
grep -r --color -w "java" ./ #当前目录及子目录下,全字匹配 java 字符串,且高亮结果

        ps 命令:查看当前系统上正在运行的进程信息,包括进程 ID(PID)、进程所属用户、进程状态、占用资源等,是进程排查、进程 ID 查找的核心命令。

ps [参数]...
选项 功能说明
a 显示一个终端的所有进程,包含其他用户的进程
u 以用户为主的格式显示进程信息,包含用户名、CPU / 内存占用率、进程启动时间等(最实用)
x 显示所有程序,包括不关联终端的后台进程(如守护进程)
e 显示系统所有进程,包括系统守护进程(与 a 功能类似,常与 f 组合)
f 显示进程的完整格式,包含进程的父进程 ID、进程命令行等,便于查看进程启动参数

        ps 命令的选项常组合使用,其中 ps aux 和 ps -ef 是最常用的两种组合,可显示系统全量进程信息,二者输出格式略有差异,但核心信息一致。

ps aux #查看系统所有进程的详细信息
ps aux | grep "java" #过滤指定名称的进程
ps aux | grep "12345"  # 12345为目标进程ID
ps -ef | grep "mysql"

        netstat 命令:核心功能是查看系统的网络状态信息,包括网络连接、套接字(Socket)状态、端口占用、网络协议、进程与端口的关联关系等,是端口排查、网络连接问题定位的核心命令(如排查 “端口被占用”“进程占用哪个端口”)。

netstat [参数]...
选项 功能说明
-a 显示所有正在 / 不在侦听的套接字,包括 TCP、UDP、UNIX 域套接字,覆盖所有网络连接
-n 以数字形式显示地址和端口号(不解析主机名、端口名),提升命令执行速度,避免解析失败
-p 显示套接字所属进程的 PID 和进程名,核心选项,用于定位 “哪个进程占用了某个端口”

        三个选项通常组合为 netstat -anp 使用,可显示系统全量网络状态 + 数字格式 + 进程关联,是网络排查的基础命令。

netstat -anp #查看系统所有网络状态
netstat -anp | grep "8080" #查找 8080 端口被哪个进程占用
netstat -anp | grep "mysql" #查找 mysql 进程对应的端口和网络连接
netstat -anp -t  # -t表示TCP,-u表示UDP

3.4. 管道符

        管道的本质是 Linux 中一种古老的进程间通信方式,在 Linux 指令中通过符号 **|** 作为管道标记。核心功能是将前一个指令标准输出的内容,直接作为第二个指令的标准输入内容,实现多个指令的联动执行。

四、搭建 Java 部署环境

4.1. apt

        apt(Advanced Packaging Tool)是Ubuntu、Debian 及相关 Linux 发行版专属的 deb 软件包管理工具,核心用于软件包的安装、更新、删除与管理。多数 apt 命令需以拥有sudo权限的用户执行;若通过 sudo su 切换至 root 用户,命令前无需加 sudo。

        列出所有软件包:可搭配 grep 过滤指定包(如apt list |grep "java");

apt list

        更新软件包数据库:新装系统 / 安装软件前的必要操作,让系统获取最新的软件包信息;

sudo apt-get update

        安装软件包:

sudo apt install package_name #package_name 为具体软件包名

        移除软件包:

sudo apt remove package_name

        remove 与 purge 的核心区别:apt remove:仅删除软件包的二进制文件,会保留残留的配置文件;apt purge:删除与软件包相关的所有内容(含配置文件),适合需彻底清除软件痕迹、重新配置的场景;日常使用 apt remove 即可满足需求。

4.2. JDK

        Ubuntu 系统下通过 apt 包管理工具安装、验证及卸载 OpenJDK 17,核心选用开源的 OpenJDK 而非 Oracle JDK(因 Oracle JDK 安装更繁琐)。

  1. 安装 OpenJDK 17:执行 sudo apt-get update,保证能检索到最新的软件包信息,该命令需 sudo 权限;执行 apt list |grep "jdk",筛选出系统中可用的 JDK 相关包;输入 sudo apt install openjdk-17-jdk,安装过程中输入 Y 确认即可,系统会自动安装依赖包。
  2. 验证安装结果:安装完成后,执行 java -version 命令验证.

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐