Linux系统的使用
为什么需要学习Linux系统的使用?
因为在真实工作中,很多中间件以及我们的应用服务,通常都是部署在 Linux 服务器 上,而不是 Windows 系统。 所以,Linux 的常见操作是开发人员必须掌握的基础能力。
另外,Linux 的使用方式和 Windows 也不太一样。 Windows 更多是通过图形化界面进行管理, 而 Linux 在实际工作中,更多是通过命令行来完成文件查看、日志排查、服务启动、进程管理等操作。
因此,想要更好地适应真实开发工作, Linux 的基本使用一定要会。
一、XShell 的使用
1.1 什么是 XShell
XShell 是一个强大的安全终端模拟软件,支持SSH1、SSH2、SFTP、TELNET等多种协议,用于远程连接Linux服务器。它是Java开发人员日常工作中不可或缺的工具。
1.2 安装

1.3 连接服务器步骤
第一步:创建新会话
- 打开 XShell,点击「文件」→「新建」
- 或直接点击工具栏的「新建」图标
第二步:配置连接信息
| 配置项 | 说明 | 示例 |
|---|---|---|
| 名称 | 会话名称(自定义,便于识别) | 正常服务器少的话,直接填写IP即可 |
| 协议 | 连接协议 | SSH |
| 主机 | 服务器IP地址 | 192.168.1.100 |
| 端口 | SSH端口 | 22(默认) |

第三步:配置用户认证
-
点击左侧「用户身份验证」
-
输入用户名(如:root)

1 -
输入密码
-
点击「确定」连接

1
1.4 保存会话技巧
建议按环境分类保存会话,方便管理:
XShell 会话管理├── 生产环境│ ├── 应用服务器1│ ├── 应用服务器2│ └── 数据库服务器├── 测试环境│ ├── 应用服务器│ └── 数据库服务器└── 开发环境 └── 本地虚拟机1.5 常见问题
问题1:连接被拒绝
- 检查IP地址和端口是否正确
- 检查服务器SSH服务是否启动:
systemctl status sshd - 检查防火墙是否开放22端口
问题2:密码正确但无法登录
- 检查用户名是否正确
- 检查服务器是否开启了密码登录
- 联系运维人员确认账号状态
问题3:连接超时
- 检查网络连通性:
ping 服务器IPtelnet 服务器IP SSH端口 - 检查防火墙设置
- 确认SSH端口是不是默认端口22
问题4:中文乱码
-
将编码设置为 UTF-8

1
二、XFTP 的使用
2.1 什么是 XFTP
XFTP 是一个文件传输软件,用于在Windows和Linux之间安全地传输文件,支持SFTP、FTP等协议。通常与XShell配合使用。
2.2 安装

2.3 连接服务器
在已连接的XShell会话中,点击工具栏的「XFTP」图标,可以直接打开XFTP并自动连接到当前服务器,无需重复输入密码。

2.4 界面说明

2.5 文件传输操作
| 操作 | 方法 | 说明 |
|---|---|---|
| 上传 | 拖拽文件到右侧 / 选中后点击上传按钮 | 从本地上传文件到服务器 |
| 下载 | 拖拽文件到左侧 / 选中后点击下载按钮 | 从服务器下载文件到本地 |
| 新建文件夹 | 右键 → 新建文件夹 | 在当前目录创建文件夹 |
| 删除 | 右键 → 删除 / 选中后按Delete键 | 删除选中的文件或文件夹 |
| 重命名 | 右键 → 重命名 / 选中后按F2键 | 重命名文件或文件夹 |
| 编辑文件 | 右键 → 用记事本编辑 | 对文件内容进行编辑 |
| 修改权限 | 右键 → 更改权限 | 修改文件权限(chmod) |
2.6 常用场景
场景1:上传Java应用包
- 在左侧本地目录找到打包好的
.jar文件 - 在右侧服务器目录切换到目标部署目录(如
/opt/app) - 拖拽文件到右侧,或选中后点击「上传」按钮
- 等待传输完成
场景2:下载日志文件
- 在右侧服务器目录找到日志文件(如
/opt/logs/app.log) - 在左侧本地目录选择保存位置
- 拖拽文件到左侧,或选中后点击「下载」按钮
- 等待传输完成
场景3:批量传输
- 选中多个文件(按住Ctrl键多选,或按住Shift键连续选)
- 拖拽或使用上传/下载按钮
- 可以看到批量传输进度
2.7 XShell 与 XFTP 配合使用
在实际工作中,XShell和XFTP通常配合使用:
- XShell 用于执行命令、查看日志、管理服务
- XFTP 用于上传部署包、下载日志文件、修改配置文件
典型工作流程:
1. 使用XFTP上传应用包到服务器 ↓2. 使用XShell连接服务器,进入部署目录 ↓3. 使用XShell停止旧服务、备份旧版本 ↓4. 使用XShell启动新服务 ↓5. 使用XShell查看运行日志(tail -f) ↓6. 如需下载日志分析,使用XFTP下载三、常用命令
3.1 目录结构
Linux只有一个根目录 /,采用层级式的目录结构。
重要目录说明:
| 目录 | 说明 |
|---|---|
| /bin -> /usr/bin | 系统的可执行文件,可以在任何目录下执行 |
| /usr/local/bin | 用户自己的可执行文件,可以在任何目录下执行 |
| /etc | 存放配置文件,配置环境变量(/etc/profile) |
| /home | 每一个用户的根目录,用来保存用户私人的数据,默认目录名和用户名相同 |
| /opt | 存放额外安装的软件,相当于Windows系统的Program Files目录 |
| /var | 存放经常变化的文件,如日志文件(/var/log) |
| /tmp | 存放临时文件 |
| /root | 系统管理员(root用户)的根目录 |
目录结构图:
/├── bin├── etc├── home│ ├── user1│ └── user2├── opt├── root├── tmp└── var3.2 基本指令
3.2.1 Linux服务器信息
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看IP地址 | ifconfig 或 ip addr | 查看服务器IP地址 |
| 查看系统性能 | top | 运行的进程和系统性能信息(CPU、内存等) |
| 查看内存使用 | free -h | 以人类可读的方式显示内存使用情况 |
| 查看磁盘使用 | df -h | 查看各个分区的磁盘使用情况 |
| 查看系统版本 | cat /etc/redhat-release | 查看CentOS版本 |
| 查看内核版本 | uname -r | 查看Linux内核版本 |
防火墙相关操作:
# 查看防火墙状态systemctl status firewalld
# 启动防火墙systemctl start firewalld
# 停止防火墙systemctl stop firewalld
# 开机自启动systemctl enable firewalld
# 禁用开机自启动systemctl disable firewalld注意:所有的系统服务都可以使用
systemctl进行管理,命令格式为:systemctl start|stop|status|restart [服务名]有些版本的服务器可能使用
iptables而不是firewalld,两者都是设置和管理网络防火墙规则的工具。
开放端口操作(了解):
# 开放3306端口(MySQL常用端口)firewall-cmd --permanent --zone=public --add-port=3306/tcp
# 重新加载防火墙配置(必须执行,否则规则不生效)firewall-cmd --reload
# 查看已开放的端口firewall-cmd --zone=public --list-ports
# 查看防火墙所有规则firewall-cmd --zone=public --list-all
# 移除已开放的端口firewall-cmd --permanent --zone=public --remove-port=3306/tcpfirewall-cmd --reload3.2.2 文本编辑:vi/vim
vi和vim是Linux中的文本编辑器,用来在Linux中创建、查看或者编辑文本文件,相当于Windows中的记事本。
三种模式:
一般模式(默认模式) ↓ 按 i 或 a编辑模式 ↓ 按 Esc命令行模式(按 shift+: 进入)| 模式 | 说明 | 常用操作 |
|---|---|---|
| 一般模式 | 打开文件的默认模式 | gg:跳到文件首行G:跳到文件末行yy:复制当前行p:粘贴dd:删除当前行u:撤销 |
| 编辑模式 | 编辑文件内容 | 按 i 或 a 进入,可编辑文件内容 |
| 命令行模式 | 保存、退出、搜索等 | 按 : 进入,输入命令 |
常用命令:
| 命令 | 说明 |
|---|---|
| 退出编辑器(未修改时) | |
| ! | 不保存强制退出编辑器 |
| 保存并且退出编辑器 | |
| 保存但不退出 | |
| 显示行号 | |
| 取消行号 | |
| /搜索内容 | 搜索内容,小写 n 向下查找,大写 N 向上查找 |
| ?搜索内容 | 向上搜索内容 |
3.2.3 文件和目录操作
1. 查看和切换目录
| 命令 | 说明 |
|---|---|
| ll 或 ls -l | 查看当前目录下所有目录和文件(详细信息) |
| ls | 查看当前目录下所有目录和文件(简单列表) |
| ls -a | 查看所有文件(包括隐藏文件) |
| pwd | 显示当前所在目录的完整路径 |
| cd /opt | 切换到opt目录下(绝对路径) |
| cd .. | 切换到上级目录 |
| cd bin | 切换到当前目录的bin目录下(相对路径) |
| cd ~ | 切换到当前用户的根目录 |
| cd - | 切换到上一次所在的目录 |
2. 创建和复制
| 命令 | 说明 |
|---|---|
| mkdir data | 在当前目录下创建目录data |
| mkdir -p data/mysql | 递归创建目录(一次创建多级目录) |
| mkdir /opt/data | 在opt目录下创建目录data |
| cp gateway.jar gateway-bak.jar | 复制文件并重命名(备份常用) |
| cp -r dir1 dir2 | 递归复制目录 |
| cp app.jar /opt/ | 复制文件到指定目录 |
3. 删除操作(⚠️ 谨慎使用)
| 命令 | 说明 |
|---|---|
| rm file.txt | 提示后删除文件 |
| rm -f file.txt | 强制删除文件(不提示) |
| rm -r data | 提示后递归删除目录 |
| rm -rf data | 强制递归删除目录(不提示) |
⚠️ 危险命令警告:
rm -rf /会删除整个系统的所有文件,千万不要执行!
4. 查看文件内容(Java开发常用)
| 命令 | 说明 |
|---|---|
| cat file.txt | 查看文件全部内容,一次性显示 |
| more file.txt | 分页查看文件内容,空格翻页,q退出 |
| less file.txt | 分页查看文件内容,支持上下翻页,q退出 |
| head -n 50 file.log | 查看文件前50行 |
| tail -n 50 file.log | 查看文件后50行 |
| tail -f file.log | 实时监控文件末尾内容(查看日志常用) |
| `tail -f file.log | grep error` |
| grep “mysql” file.log | 查看文件中包含”mysql”的内容 |
| grep -n “error” file.log | 查看文件中包含”error”的内容,并显示行号 |
| grep -i “error” file.log | 忽略大小写搜索 |
| grep -C 5 “error” file.log | 显示匹配行及其前后5行 |
5. 查找文件
| 命令 | 说明 |
|---|---|
| find / -name file.txt | 从根目录查找名为file.txt的文件 |
| find /opt -name “*.java” | 查找opt目录下所有.java文件 |
| find /opt -name “*.java” | grep user | 查找opt目录下名称包含user的.java文件 |
| find /opt -type d -name “logs” | 查找名为logs的目录 |
3.2.4 用户相关操作
说明:在公司中,用户创建一般由运维人员负责,开发人员主要使用
su切换用户命令。
| 命令 | 说明 |
|---|---|
| useradd zhuoye | 添加用户zhuoye(在/home目录下创建用户根目录) |
| useradd -d /home/zhuoyun zhuoye | 创建用户并指定根目录 |
| passwd zhuoye | 给用户zhuoye设置密码 |
| userdel zhuoye | 删除用户zhuoye |
| id zhuoye | 查看用户zhuoye的信息 |
| su zhuoye | 切换到用户zhuoye |
| su - | 切换到root用户 |
用户切换说明:
- 从权限高的用户切换到权限低的用户:不需要密码验证
- 从权限低的用户切换到权限高的用户:必须密码验证
3.2.5 压缩和解压操作
1. gzip/gunzip(单个文件)
| 命令 | 说明 |
|---|---|
| gzip file.txt | 压缩单个文件,生成.gz压缩包,并删除原文件 |
| gunzip file.txt.gz | 解压.gz压缩包,并删除原压缩包 |
2. zip/unzip(多个文件和目录)
| 命令 | 说明 |
|---|---|
| zip archive.zip file1.txt file2.txt | 把多个文件压缩为zip文件 |
| zip -r archive.zip dir/ | 递归压缩目录 |
| unzip archive.zip | 解压zip文件到当前目录 |
| unzip archive.zip -d /opt/data | 解压zip文件到指定目录 |
3. tar(Java开发最常用)
| 命令 | 说明 |
|---|---|
| tar -zcvf archive.tar.gz file1 file2 dir/ | 打包并压缩 |
| tar -zxvf archive.tar.gz | 解压到当前目录 |
| tar -zxvf archive.tar.gz -C /opt/data | 解压到指定目录 |
参数说明:
-z:使用gzip压缩/解压-c:创建压缩包-x:解压-v:显示详细过程-f:指定文件名(必须放在最后)-C:指定解压目录
3.2.6 权限相关操作
1. 修改文件所有者
| 命令 | 说明 |
|---|---|
| chown zhuoye file.txt | 修改文件的所有者为zhuoye用户 |
| chown -R zhuoye data/ | 递归修改目录及其内部文件的所有者 |
| chown zhuoye | 同时修改所有者和所属组 |
2. 文件权限控制
| 命令 | 说明 |
|---|---|
| chmod 777 file.txt | 将文件权限设置为777(所有用户可读写执行) |
| chmod 755 file.txt | 所有者可读写执行,其他用户可读执行 |
| chmod 644 file.txt | 所有者可读写,其他用户只读 |
权限说明:
Linux中每个文件或目录都有三部分权限:所有者权限、同组用户权限、其他组用户权限。
| 权限 | r(读) | w(写) | x(执行) | 数字表示 |
|---|---|---|---|---|
| 说明 | 可查看内容 | 可修改内容 | 可执行/进入目录 | 4 / 2 / 1 |
| 权限组合 | 说明 | 数字 |
|---|---|---|
| rwx | 读写执行 | 7 (4+2+1) |
| r-x | 读和执行 | 5 (4+1) |
| r— | 只读 | 4 |
| --- | 无权限 | 0 |
权限表示示例:
-rwxr-xr-- file.txt ││││││││││ │││││││││└─ 其他用户:只读(4) │││││││└──── 同组用户:读执行(5) │││││└─────── 所有者:读写执行(7)3.2.7 进程管理(Java开发必备)
| 命令 | 说明 |
|---|---|
| `ps -ef | grep mysql` |
| `ps -ef | grep java` |
| jps | 查看当前运行的Java进程(JDK自带,最常用) |
| lsof -i <3306>3306> | 查看占用3306端口的进程 |
| `netstat -tunlp | grep 8080` |
| kill -9 PID | 强制关闭指定PID的进程 |
| kill -15 PID | 正常关闭指定PID的进程 |
Java应用部署常用操作:
# 1. 查看Java进程jps# 或ps -ef | grep java
# 2. 查看应用占用的端口lsof -i :8080
# 3. 停止应用kill -15 <PID>
# 4. 后台启动Java应用(常用)nohup java -jar app.jar > app.log 2>&1 &
# 5. 查看应用日志tail -f app.log3.2.8 软件包安装
1. RPM包安装
| 命令 | 说明 |
|---|---|
| rpm -ivh package.rpm | 安装rpm包(i-安装,v-显示详情,h-进度条) |
| rpm -ivh —force package.rpm | 强制安装 |
| rpm -e package.rpm | 卸载rpm软件包 |
| rpm -qa | grep java | 查看已安装的软件 |
2. YUM安装(推荐)
| 命令 | 说明 |
|---|---|
| yum install firefox | 安装软件 |
| yum list installed | grep firefox | 查看已安装的软件 |
| yum remove firefox.x86_64 | 卸载软件 |
| yum update | 更新所有软件包 |
| yum search keyword | 搜索软件包 |
3.3 拓展指令
3.3.1 文件上传下载
| 命令 | 说明 |
|---|---|
| rz -y | 上传本地文件到Linux服务器(-y表示覆盖同名文件) |
| sz filename | 下载服务器文件到本地电脑 |
说明:如果提示命令不存在,需要先安装:
yum install lrzsz
3.3.2 执行可执行文件
# 方式1:使用相对路径或绝对路径./script.sh
# 方式2:使用sh命令sh script.sh
# 方式3:使用bash命令bash script.sh3.3.3 网络相关(Java开发调试必备)
| 命令 | 说明 |
|---|---|
| ping www.baidu.com | 测试网络连通性 |
| telnet ip port | 测试端口是否连通(如:telnet 192.168.1.100 3306) |
| curl http://api.example.com | 测试HTTP接口 |
| wget http://example.com/file.zip | 下载文件 |
3.3.4 环境变量
| 命令 | 说明 |
|---|---|
| echo $JAVA_HOME | 查看JAVA_HOME环境变量 |
| echo $PATH | 查看PATH环境变量 |
| export JAVA_HOME=/opt/jdk11 | 临时设置环境变量 |
| source /etc/profile | 使配置文件生效 |
永久配置环境变量:
# 1. 编辑配置文件vim /etc/profile
# 2. 在文件末尾添加export JAVA_HOME=/opt/jdk11export PATH=$JAVA_HOME/bin:$PATH
# 3. 使配置生效source /etc/profile四、实战练习
4.1 日常操作流程练习
任务:部署一个Java应用
# 1. 连接服务器(使用XShell)
# 2. 进入应用部署目录cd /opt/app
# 3. 查看当前目录内容ll
# 4. 查看是否有Java进程在运行jps
# 5. 如果有旧进程,先停止(假设PID是12345)kill -15 12345
# 6. 备份旧版本cp app.jar app-bak-$(date +%Y%m%d).jar
# 7. 使用XFTP上传新版本app.jar到当前目录
# 8. 后台启动应用nohup java -jar app.jar > app.log 2>&1 &
# 9. 查看启动日志tail -f app.log
# 10. 确认启动成功后,按Ctrl+C退出日志查看(应用继续运行)4.2 问题排查练习
问题1:应用无法启动
# 检查Java环境java -version
# 检查端口是否被占用lsof -i :8080
# 查看错误日志tail -100 app.log | grep ERROR
# 检查磁盘空间df -h问题2:无法访问应用
# 检查应用是否运行jps
# 检查端口监听netstat -tunlp | grep 8080
# 检查防火墙firewall-cmd --zone=public --list-ports
# 如果没有开放端口,添加端口firewall-cmd --permanent --zone=public --add-port=8080/tcpfirewall-cmd --reload支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!














