为什么需要学习Linux系统的使用?
因为在真实工作中,很多中间件以及我们的应用服务,通常都是部署在 Linux 服务器 上,而不是 Windows 系统。 所以,Linux 的常见操作是开发人员必须掌握的基础能力。
另外,Linux 的使用方式和 Windows 也不太一样。 Windows 更多是通过图形化界面进行管理, 而 Linux 在实际工作中,更多是通过命令行来完成文件查看、日志排查、服务启动、进程管理等操作。
因此,想要更好地适应真实开发工作, Linux 的基本使用一定要会。
一、XShell 的使用
1.1 什么是 XShell
XShell 是一个强大的安全终端模拟软件,支持SSH1、SSH2、SFTP、TELNET等多种协议,用于远程连接Linux服务器。它是Java开发人员日常工作中不可或缺的工具。
1.2 安装
1.3 连接服务器步骤
第一步:创建新会话
第二步:配置连接信息
第三步:配置用户认证
点击左侧「用户身份验证」
输入用户名(如:root)
输入密码
点击「确定」连接
1.4 保存会话技巧
建议按环境分类保存会话,方便管理:
XShell 会话管理├── 生产环境│ ├── 应用服务器1│ ├── 应用服务器2│ └── 数据库服务器├── 测试环境│ ├── 应用服务器│ └── 数据库服务器└── 开发环境 └── 本地虚拟机
1.5 常见问题
问题1:连接被拒绝
- 检查服务器SSH服务是否启动:
systemctl status sshd
问题2:密码正确但无法登录
问题3:连接超时
- 检查网络连通性:
ping 服务器IPtelnet 服务器IP SSH端口
问题4:中文乱码
二、XFTP 的使用
2.1 什么是 XFTP
XFTP 是一个文件传输软件,用于在Windows和Linux之间安全地传输文件,支持SFTP、FTP等协议。通常与XShell配合使用。
2.2 安装
2.3 连接服务器
在已连接的XShell会话中,点击工具栏的「XFTP」图标,可以直接打开XFTP并自动连接到当前服务器,无需重复输入密码。
2.4 界面说明
2.5 文件传输操作
2.6 常用场景
场景1:上传Java应用包
- 在右侧服务器目录切换到目标部署目录(如
/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 | |
目录结构图:
/├── bin├── etc├── home│ ├── user1│ └── user2├── opt├── root├── tmp└── var
3.2 基本指令
3.2.1 Linux服务器信息
| | |
|---|
| ifconfig | |
| top | |
| free -h | |
| df -h | |
| cat /etc/redhat-release | |
| uname -r | |
防火墙相关操作:
# 查看防火墙状态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 --reload
3.2.2 文本编辑:vi/vim
vi和vim是Linux中的文本编辑器,用来在Linux中创建、查看或者编辑文本文件,相当于Windows中的记事本。
三种模式:
一般模式(默认模式) ↓ 按 i 或 a编辑模式 ↓ 按 Esc命令行模式(按 shift+: 进入)
| | |
|---|
| 一般模式 | | gg:跳到文件首行G:跳到文件末行yy:复制当前行p:粘贴dd:删除当前行u:撤销 |
| 编辑模式 | | |
| 命令行模式 | | |
常用命令:
| |
|---|
:q | |
:q! | |
:wq | |
:w | |
:set nu | |
:set nonu | |
/搜索内容 | |
?搜索内容 | |
3.2.3 文件和目录操作
1. 查看和切换目录
| |
|---|
ll | |
ls | |
ls -a | |
pwd | |
cd /opt | |
cd .. | |
cd bin | |
cd ~ | |
cd - | |
2. 创建和复制
| |
|---|
mkdir data | |
mkdir -p data/mysql | |
mkdir /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 | |
less file.txt | |
head -n 50 file.log | |
tail -n 50 file.log | |
tail -f file.log | 实时监控 |
| |
grep "mysql" file.log | |
grep -n "error" file.log | |
grep -i "error" file.log | |
grep -C 5 "error" file.log | |
5. 查找文件
| |
|---|
find / -name file.txt | |
find /opt -name "*.java" | |
find /opt -name "*.java" | grep user | |
find /opt -type d -name "logs" | |
3.2.4 用户相关操作
说明:在公司中,用户创建一般由运维人员负责,开发人员主要使用 su 切换用户命令。
| |
|---|
useradd zhuoye | 添加用户zhuoye(在/home目录下创建用户根目录) |
useradd -d /home/zhuoyun zhuoye | |
passwd zhuoye | |
userdel zhuoye | |
id zhuoye | |
su zhuoye | |
su - | |
用户切换说明:
3.2.5 压缩和解压操作
1. gzip/gunzip(单个文件)
| |
|---|
gzip file.txt | |
gunzip file.txt.gz | |
2. zip/unzip(多个文件和目录)
| |
|---|
zip archive.zip file1.txt file2.txt | |
zip -r archive.zip dir/ | |
unzip archive.zip | |
unzip archive.zip -d /opt/data | |
3. tar(Java开发最常用)
| |
|---|
tar -zcvf archive.tar.gz file1 file2 dir/ | |
tar -zxvf archive.tar.gz | |
tar -zxvf archive.tar.gz -C /opt/data | |
参数说明:
3.2.6 权限相关操作
1. 修改文件所有者
| |
|---|
chown zhuoye file.txt | |
chown -R zhuoye data/ | |
chown zhuoye:zhuoye file.txt | |
2. 文件权限控制
| |
|---|
chmod 777 file.txt | |
chmod 755 file.txt | |
chmod 644 file.txt | |
权限说明:
Linux中每个文件或目录都有三部分权限:所有者权限、同组用户权限、其他组用户权限。
权限表示示例:
-rwxr-xr-- file.txt ││││││││││ │││││││││└─ 其他用户:只读(4) │││││││└──── 同组用户:读执行(5) │││││└─────── 所有者:读写执行(7)
3.2.7 进程管理(Java开发必备)
| |
|---|
| |
| |
jps | 查看当前运行的Java进程 |
lsof -i :3306 | |
| |
kill -9 PID | |
kill -15 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.log
3.2.8 软件包安装
1. RPM包安装
| |
|---|
rpm -ivh package.rpm | 安装rpm包(i-安装,v-显示详情,h-进度条) |
rpm -ivh --force package.rpm | |
rpm -e package.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.sh
3.3.3 网络相关(Java开发调试必备)
| |
|---|
ping www.baidu.com | |
telnet ip port | 测试端口是否连通(如:telnet 192.168.1.100 3306) |
curl http://api.example.com | |
wget http://example.com/file.zip | |
3.3.4 环境变量
| |
|---|
echo PATH | |
export JAVA_HOME=/opt/jdk11 | |
source /etc/profile | |
永久配置环境变量:
# 1. 编辑配置文件vim /etc/profile# 2. 在文件末尾添加export JAVA_HOME=/opt/jdk11export PATH=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).jar7. 使用XFTP上传新版本app.jar到当前目录8. 后台启动应用nohup java -jar app.jar > app.log 2>&1 &9. 查看启动日志tail -f app.log10. 确认启动成功后,按Ctrl+C退出日志查看(应用继续运行)### 4.2 问题排查练习**问题1:应用无法启动**```bash# 检查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相关课程地址: Java新人入职保姆级教程之Linux系统的使用