JavaEE 进阶第二十二期:Linux ,一名开发者的系统世界



专栏:JavaEE 进阶跃迁营
个人主页:手握风云
目录
一、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 的优势
- 开源免费,用户可以自由获取源代码并根据需求修改定制;
- 高度可定制,能根据不同的应用场景进行深度优化;
- 稳定性强,长时间运行不易崩溃;
- 安全性高,具备严格的权限管理和访问控制。
二、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 记事本,核心操作围绕模式切换展开(默认打开为普通模式,需切换插入模式才能编辑)。核心功能是创建新文件、打开已有文件并进行文本编辑、保存 / 退出文件。
关键操作步骤:
- 创建 / 打开文件:vim [文件名](文件不存在则创建,存在则打开);
- 进入插入模式:普通模式下按i键,左下角出现--INSERT--标识,即可正常编辑文本;
- 保存文件:按Esc回到普通模式,输入:w并回车;
- 退出文件(需先回到普通模式):
- 文件未修改:输入
: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 安装更繁琐)。
- 安装 OpenJDK 17:执行 sudo apt-get update,保证能检索到最新的软件包信息,该命令需 sudo 权限;执行 apt list |grep "jdk",筛选出系统中可用的 JDK 相关包;输入 sudo apt install openjdk-17-jdk,安装过程中输入 Y 确认即可,系统会自动安装依赖包。
- 验证安装结果:安装完成后,执行 java -version 命令验证.

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