Skip to content

01-Linux 基础与高级

对应原始资料:项目一前置课b/day09-Linux基础day10-Linux高级

一、为什么 Java 工程师要学 Linux

  • 服务几乎都部署在 Linux(云服务器、容器)。
  • 排查问题、看日志、运维部署都依赖命令行。

二、基础命令

1. 目录与文件

bash
pwd               # 当前路径
ls -l / ls -a     # 列出文件
cd /home          # 切换
mkdir -p a/b/c    # 多级创建
touch a.txt       # 新建文件
cp -r src dst     # 递归拷贝
mv a b            # 移动/重命名
rm -rf dir        # 强制递归删除(危险,慎重)

2. 文件查看

bash
cat a.txt              # 全部
more a.txt / less a.txt # 分页
head -10 a.txt          # 前 10 行
tail -f app.log         # 实时追踪日志(排查问题必用)

3. 文本处理三剑客

bash
grep "error" app.log            # 过滤
grep -n "error" app.log         # 带行号
grep -rn "TODO" .               # 递归带行号

find / -name "*.log"            # 按名查找
find . -mtime -1                # 1 天内修改

tar -zcvf a.tar.gz dir/         # 压缩
tar -zxvf a.tar.gz              # 解压

| 管道:把前一个的输出作为后一个的输入
ps -ef | grep java

4. 权限

bash
chmod 755 a.sh          # rwx rx rx
chmod +x a.sh           # 加执行权限
chown user:group file   # 改所有者

权限数字:r=4 w=2 x=1

5. 进程 / 端口

bash
ps -ef | grep java          # 看进程
top                          # 实时进程/内存
kill -9 <pid>                # 强杀

netstat -anp | grep 8080     # 看端口
lsof -i:8080

6. 网络

bash
ip addr / ifconfig
ping baidu.com
curl http://localhost:8080/api
wget url

三、高级 —— 软件安装

1. 包管理器

  • CentOS:yum install -y nginx
  • Ubuntu:apt install

2. systemctl 服务管理

bash
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl status nginx
systemctl enable nginx        # 开机自启

3. 解压安装(如 JDK、Tomcat)

bash
# 下载、解压、配置环境变量
tar -zxvf jdk-8.tar.gz -C /usr/local/
vim /etc/profile
# export JAVA_HOME=/usr/local/jdk
# export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile

四、Vim 编辑器

bash
vim a.txt
# 命令模式 → i/a/o 插入模式 → Esc 回到命令模式 → :wq 保存退出

常用:

  • i 插入、o 下一行插入。
  • yy 复制行、dd 剪切行、p 粘贴。
  • u 撤销、Ctrl+r 重做。
  • : 进入底行,wq 保存退出、q! 强制不保存退出、/word 搜索。

五、Shell 脚本(了解)

bash
#!/bin/bash
# 变量、条件、循环
name=$1
echo "hello $name"
if [ -f /etc/passwd ]; then echo exists; fi
for f in *.log; do echo $f; done

赋予执行权限后 ./a.sh 执行。

六、网络与快照(扩展资料)

原始资料 Linux-扩展-网络-快照.md 涵盖:

  • 虚拟机网络模式(桥接、NAT、仅主机)。
  • VMware 快照 / 克隆,方便随时回滚实验环境。
  • 静态 IP 配置、防火墙 firewall-cmd

七、Java 工程师常用工作流

bash
# 1. 上传 jar
scp app.jar user@server:/opt/app/

# 2. 后台启动
nohup java -jar app.jar --spring.profiles.active=prod > app.log 2>&1 &

# 3. 看日志
tail -f app.log | grep -i error

# 4. 重启
ps -ef | grep app.jar | grep -v grep | awk '{print $2}' | xargs kill -9
nohup java -jar app.jar > app.log 2>&1 &

练习建议

  1. 买一台云服务器(或装虚拟机),跑通基础命令。
  2. 在 Linux 上安装 JDK、MySQL、Tomcat。
  3. 把一个 SpringBoot jar 部署到 Linux 并后台运行。
  4. tail -f 排查一个运行时日志。
  5. 写一个 shell 脚本实现「备份 MySQL 数据库到指定目录」。