快学大数据之路-Linux 零基础学习路线图
从 0 到 1 的系统化学习路径 | 理论 + 实操 | 约 12 周
写在前面: Linux 是大数据开发、云计算、运维、后端开发等领域的基石。本路线图专为零基础学习者设计,分 6 个阶段循序渐进,每个阶段都配有可动手实操的练习。建议你准备一台可以联网的电脑(Windows / Mac 均可),跟着教程一步步来。
阶段一:认识 Linux 与环境搭建(第 1 周)
1.1 Linux 是什么
Linux 是一类开源操作系统的统称,由 Linus Torvalds 于 1991 年创建。它的核心(Kernel)免费公开,任何人都可以基于它开发自己的发行版。
核心概念速览
| 概念 | 说明 |
|---|
Kernel(内核) | 操作系统的核心,管理硬件、进程、内存等 |
Distribution(发行版) | 基于 Kernel + 软件包的完整操作系统,如 Ubuntu、CentOS |
Shell | 用户与内核之间的命令解释器(如 Bash) |
Terminal(终端) | 输入命令的界面窗口 |
SSH | 远程安全连接 Linux 服务器的协议 |
1.2 选择适合的 Linux 发行版
对于零基础学习者,推荐以下发行版:
建议: 如果你只是想先体验,不需要安装,可以直接跳到下面的虚拟机方案。后期走大数据方向建议熟悉 CentOS / Rocky Linux。
1.3 环境搭建 -- 三种方案任选
方案 A:虚拟机安装(推荐)
在现有电脑上安装虚拟机软件,然后在虚拟机里运行 Linux。
下载安装 VMware Workstation Player(免费)或 VirtualBox(免费开源)
下载 Ubuntu Desktop ISO 镜像(官网:ubuntu.com/download/desktop)
新建虚拟机 -- 分配 2GB+ 内存、20GB+ 硬盘 -- 挂载 ISO -- 启动安装
# 1. 打开 VMware,点击 "创建新虚拟机"# 2. 选择 "安装程序光盘映像文件(iso)",浏览到下载的 ubuntu-xx.xx-desktop-amd64.iso# 3. 设置虚拟机名称和存放位置# 4. 磁盘大小建议至少 30GB(选"将虚拟磁盘拆分成多个文件")# 5. 内存建议 2048MB 或以上# 6. 完成后点击 "开启此虚拟机",按提示完成 Ubuntu 安装
方案 B:WSL2(Windows 专属)
Windows 10/11 可直接使用 WSL2 运行 Linux 子系统,轻量级,秒启动。
# 在 Windows PowerShell(管理员)中执行:wsl --install# 安装完成后重启电脑,打开 "Ubuntu" 应用即可进入 Linux 终端# 更新系统:sudo apt update && sudo apt upgrade -y
方案 C:云服务器
购买一台阿里云 / 腾讯云学生服务器(约 9.9 元/月),通过 SSH 远程连接。
# 在本地终端(Windows 用 PowerShell / Mac 用 Terminal)连接:ssh root@你的服务器IP# 首次连接会提示指纹确认,输入 yes 即可
1.4 第一次打开终端
无论用哪种方案,打开终端后你会看到一个类似这样的提示符:
user@ubuntu:~$
这表示:当前用户是 user,主机名是 ubuntu,当前目录是 ~(家目录),$ 表示普通用户权限。
# 动手试一试:输入以下命令并观察结果whoami # 查看当前用户名pwd # 查看当前所在目录date # 查看当前日期和时间uname -a# 查看系统内核信息ls# 列出当前目录下的文件echo"Hello Linux"# 输出一段文字
阶段一自检清单
- 能说出 Linux 内核、发行版、Shell、终端的区别
- 成功安装并运行了 Linux 环境(虚拟机 / WSL / 云服务器)
- 能在终端中执行基本命令(whoami、pwd、ls、echo)
阶段二:Linux 基础命令 -- 文件与目录操作(第 2-3 周)
2.1 文件系统结构
Linux 的文件系统是一个树形结构,最顶层是根目录 /,一切文件都从这里开始。
| 目录 | 用途 |
|---|
/ | 根目录,所有目录的起点 |
/home | 普通用户的家目录 |
/root | root 超级管理员的家目录 |
/etc | 系统配置文件 |
/var | 可变数据(日志、缓存等) |
/tmp | 临时文件 |
/usr | 用户安装的程序和文件 |
/bin / /sbin | 系统基本命令 / 系统管理命令 |
/dev | 设备文件 |
/opt | 第三方软件安装目录 |
2.2 目录导航命令
# 绝对路径 vs 相对路径cd /home/user # 绝对路径:从根目录开始的完整路径cd Documents # 相对路径:相对于当前位置cd ~ # 回到家目录(~ 等同于 /home/用户名)cd .. # 返回上一级目录cd-# 返回上一次所在目录cd / # 直接跳到根目录
2.3 文件与目录操作命令
查看与列出
ls# 列出当前目录文件ls-l# 详细列表(权限、大小、时间)ls-a# 显示隐藏文件(以 . 开头的文件)ls-lh# 详细列表,文件大小用人类可读格式(KB/MB/GB)ls-la /etc # 查看 /etc 目录下所有文件详情# 实操练习ls-la ~ # 查看家目录下所有文件(包括隐藏文件)tree ~ # 树形结构查看(如未安装:sudo apt install tree)
创建文件与目录
mkdir mydir # 创建目录mkdir-p project/src/main # 递归创建多级目录touch file1.txt # 创建空文件touch file1.txt file2.txt # 同时创建多个文件echo"Hello World" > file1.txt # 创建文件并写入内容(覆盖)echo"Append" >> file1.txt # 追加内容到文件末尾# 实操练习:搭建一个项目目录结构mkdir-p myproject/{src,test,docs,logs}touch myproject/src/main.py myproject/test/test_main.py myproject/README.mdtree myproject复制、移动、删除
cp file1.txt file2.txt # 复制文件cp-r dir1/ dir2/ # 递归复制整个目录mv file1.txt newname.txt # 重命名 / 移动文件mv file1.txt dir1/ # 将文件移动到 dir1 目录rm file1.txt # 删除文件rm-r dir1/ # 递归删除目录及其内容rm-rf dir1/ # 强制递归删除(谨慎使用!不可恢复!)
警告:rm -rf / 会删除整个系统所有文件!执行任何 rm 命令前请三思。建议新手先用 ls 确认目标,或使用 rm -i(交互式确认删除)。
查看文件内容
cat file1.txt # 查看文件全部内容head -n10 file1.txt # 查看文件前 10 行tail -n10 file1.txt # 查看文件后 10 行tail -f /var/log/syslog # 实时追踪日志文件(常用!)less file1.txt # 分页查看(q 退出,空格翻页)
2.4 通配符与路径展开
# * 匹配任意字符,? 匹配单个字符ls *.txt # 列出所有 .txt 文件ls file?.txt # 列出 file1.txt、file2.txt 等cp *.txt backup/ # 复制所有 txt 文件到 backup 目录# {} 花括号展开mkdir-p test/{a,b,c}echo {1..10} # 输出:1 2 3 4 5 6 7 8 9 10阶段二实操项目:文件管理自动化
# 目标:在 ~/file-management-practice 目录下完成以下操作cd ~mkdir-p file-management-practice/{downloads,documents,images,archives}cd file-management-practice# 1. 在 documents 下创建 5 个笔记文件touch documents/note_{1..5}.md# 2. 在每个笔记中写入内容echo"# 笔记1" > documents/note_1.mdecho"# 笔记2" > documents/note_2.mdecho"# 笔记3" > documents/note_3.md# 3. 将所有 .md 文件复制到 archives 备份cp documents/*.md archives/# 4. 查看目录结构tree .# 5. 清理:删除 note_4.md 和 note_5.mdrm documents/note_4.md documents/note_5.md# 6. 验证结果ls documents/ls archives/阶段二自检清单
- 能说出 Linux 文件系统根目录下主要目录的用途
- 熟练使用 cd、ls、mkdir、touch、cp、mv、rm 命令
- 理解绝对路径与相对路径的区别
- 能用 cat、head、tail、less 查看文件内容
- 独立完成文件管理实操项目
阶段三:用户权限与系统管理(第 4 周)
3.1 用户与用户组
# 查看当前用户whoamiid # 显示用户ID(UID)、组ID(GID)及所属组# 创建与管理用户sudo useradd -m-s /bin/bash newuser # 创建新用户(-m 自动建家目录)sudo passwd newuser # 设置密码sudo userdel -r newuser # 删除用户(-r 同时删除家目录)# 用户组管理sudo groupadd devteam # 创建组sudo usermod -aG devteam newuser # 将用户加入组(-a 追加,-G 指定组)groups newuser # 查看用户所属的组cat /etc/group | grep devteam # 查看组信息
3.2 文件权限详解
每个文件有三组权限,分别对应:文件所有者(Owner)、所属组(Group)、其他人(Others)。
# 查看文件权限ls-l file1.txt# 输出示例:-rw-r--r-- 1 user user 1234 Apr 19 10:00 file1.txt# 解读:-|rw-|r--|r-- (类型|所有者权限|组权限|其他人权限)# r = 读取(4), w = 写入(2), x = 执行(1)
| 符号 | 数字 | 含义 |
|---|
r | 4 | 可读取文件内容 / 可列出目录内容 |
w | 2 | 可修改文件 / 可在目录中创建/删除文件 |
x | 1 | 可执行文件 / 可进入目录 |
# 修改权限chmod755 script.sh # rwxr-xr-x:所有者全权限,其他人读写+执行chmod644 file1.txt # rw-r--r--:所有者读写,其他人只读chmod+x script.sh # 给所有用户添加执行权限chmod u+x script.sh # 只给所有者添加执行权限# 修改所有者sudochown newuser file1.txt # 改文件所有者sudochown newuser:devteam file1.txt # 同时改所有者和所属组sudochown-R newuser mydir/ # 递归修改目录下所有文件
3.3 sudo 与 root
# root 是超级管理员,拥有最高权限# 普通用户通过 sudo 临时获取 root 权限执行命令sudo apt update # 以管理员权限更新软件源sudo visudo # 编辑 sudoers 文件(管理谁可以使用 sudo)# 切换用户su- newuser # 切换到 newuser(- 表示加载目标用户的环境变量)su-# 切换到 root 用户exit# 退出当前用户,返回上一用户
3.4 进程管理
# 查看进程ps aux # 查看所有进程ps aux | grep python # 过滤查找 Python 进程top# 实时进程监控(类似任务管理器,q 退出)htop # 更友好的进程监控(需安装:sudo apt install htop)# 管理进程kill1234# 终止 PID 为 1234 的进程kill-91234# 强制终止进程killall python3 # 按名称终止所有 python3 进程Ctrl + C # 在终端中中断当前运行的程序Ctrl + Z # 暂停当前程序(恢复用 bg 或 fg)# 后台运行nohup python3 train.py & # 后台运行,断开终端也不会停止jobs # 查看当前终端的后台任务
阶段三实操练习
# 1. 创建一个新用户 dev01sudo useradd -m-s /bin/bash dev01sudo passwd dev01# 2. 创建一个开发组sudo groupadd developerssudo usermod -aG developers dev01# 3. 创建测试文件并设置权限mkdir-p /home/sharedsudochown :developers /home/sharedsudochmod775 /home/shared# 4. 以 dev01 身份验证su- dev01cd /home/sharedtouch test.txtls-laexit# 5. 运行一个后台进程并管理sleep300 &ps aux | grepsleepkill %1jobs
阶段三自检清单
- 能创建/删除用户和用户组
- 理解 rwx 权限,能用数字和符号方式修改权限
- 理解 sudo 的作用和安全意义
- 能用 ps、top、kill 管理进程
阶段四:文本处理与 Shell 脚本入门(第 5-6 周)
4.1 管道与重定向
管道 | 是 Linux 最强大的特性之一:将一个命令的输出作为另一个命令的输入。
# 重定向command > file # 标准输出重定向到文件(覆盖)command >> file # 标准输出追加到文件command 2> file # 标准错误重定向到文件command > file 2>&1 # 标准输出和标准错误都重定向到文件# 管道cat file.txt | head -5# 查看文件前 5 行ps aux | grep python | wc-l# 统计 Python 进程数量ls-l /etc | grep".conf" | head -10# 查找 /etc 下配置文件cat access.log | awk'{print $1}' | sort | uniq -c | sort-rn | head -10# 统计访问IP Top104.2 三剑客:grep、sed、awk
grep -- 文本搜索
grep"error" logfile.txt # 在文件中搜索包含 "error" 的行grep-i"error" logfile.txt # 忽略大小写搜索grep-r"config" /etc/ # 递归搜索目录下所有文件grep-n"error" logfile.txt # 显示行号grep-v"debug" logfile.txt # 反向匹配(排除含 debug 的行)grep-c"error" logfile.txt # 统计匹配行数grep--color"error" logfile.txt # 高亮匹配关键字# 实操:创建测试文件并练习echo-e"apple\nbanana\napricot\ncherry\navocado" > fruits.txtgrep"^a" fruits.txt # 以 a 开头的行grep"a$" fruits.txt # 以 a 结尾的行grep -i "AN" fruits.txt # 忽略大小写
sed -- 流编辑器
sed's/old/new/' file.txt # 替换每行第一个匹配sed's/old/new/g' file.txt # 替换所有匹配sed-i's/old/new/g' file.txt # 直接修改文件(-i 表示 in-place)sed-n'10,20p' file.txt # 打印第 10-20 行sed'2d' file.txt # 删除第 2 行sed'/^$/d' file.txt # 删除空行# 实操echo-e"hello world\nhello linux\nhello sed" > test.txtsed's/hello/hi/g' test.txt # 所有 hello 替换为 hised-i's/hello/hi/g' test.txt # 直接修改文件cat test.txt
awk -- 文本分析工具
awk'{print $1}' file.txt # 打印每行第 1 列(默认空格分隔)awk-F: '{print $1}' /etc/passwd # 以冒号为分隔符,打印第 1 列awk'{print NR, $0}' file.txt # 带行号打印所有内容awk'$3 > 100 {print $0}' file.txt # 打印第 3 列大于 100 的行awk'{sum += $1} END {print sum}'# 计算第 1 列的总和# 实操:分析 CSV 数据echo-e"name,age,score\ntom,25,88\njerry,22,95\nalice,28,91" > scores.csvawk-F, 'NR>1 {sum+=$3; count++} END {print "平均分:", sum/count}' scores.csv4.3 Shell 脚本编程基础
Shell 脚本是将多个命令组合在一起的文本文件,可以自动化完成复杂任务。
# ---- 第一个 Shell 脚本 ----cat > hello.sh << 'EOF'#!/bin/bash# 这是一个简单的 Shell 脚本echo"Hello, $1! Today is $(date +%Y-%m-%d)"echo"Your home directory: $HOME"echo"Current user: $(whoami)"EOFchmod+x hello.sh./hello.sh Linux
变量与条件判断
cat > vars_demo.sh << 'EOF'#!/bin/bash# 变量定义(等号两边不能有空格)name="Linux Learner"age=3echo"Name: $name"echo"Age: $age"# 条件判断if [ $age-ge18 ]; thenecho"Adult"elif [ $age-ge6 ]; thenecho"Teenager"elseecho"Child"fi# 字符串比较if [ "$name"="Linux Learner" ]; thenecho"Welcome back!"fiEOFchmod+x vars_demo.sh./vars_demo.sh
循环
cat > loop_demo.sh << 'EOF'#!/bin/bash# for 循环echo"=== For Loop ==="for i in12345; doecho"Number: $i"done# C 风格 for 循环echo"=== C-style For ==="for ((i=1; i<=5; i++)); doecho"Count: $i"done# while 循环echo"=== While Loop ==="count=1while [ $count-le5 ]; doecho"While count: $count"count=$((count + 1))done# 遍历文件echo"=== File Loop ==="for file in ~/file-management-practice/documents/*.md; doecho"Found: $file"doneEOFchmod+x loop_demo.sh./loop_demo.sh
函数
cat > func_demo.sh << 'EOF'#!/bin/bash# 定义函数greet() { local name=$1echo"Hello, $name! Welcome to Linux."}add() { local a=$1 local b=$2echo$((a + b))}# 调用函数greet "Kelen"result=$(add 10 20)echo"10 + 20 = $result"EOFchmod+x func_demo.sh./func_demo.sh阶段四实操项目:系统信息自动采集脚本
cat > sys_info.sh << 'EOF'#!/bin/bash# 系统信息自动采集脚本echo"================================"echo" 系统信息采集报告"echo" 采集时间: $(date '+%Y-%m-%d %H:%M:%S')"echo"================================"echo""echo">>> 主机名: $(hostname)"echo">>> 操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"echo">>> 内核版本: $(uname -r)"echo">>> 当前用户: $(whoami)"echo""echo">>> CPU 信息:"echo" 型号: $(grep 'model name' /proc/cpuinfo | head -1 | cut -d':' -f2 | xargs)"echo" 核心数: $(nproc)"echo""echo">>> 内存信息:"free -h | head -2echo""echo">>> 磁盘使用:"df -h / | tail -1 | awk'{print " 总容量: "$2", 已用: "$3", 可用: "$4", 使用率: "$5}'echo""echo">>> 运行时间与负载:"uptimeecho""echo">>> Top 5 内存占用进程:"ps aux --sort=-%mem | head -6 | awk'{printf " %-10s %-8s %-6s %-6s %s\n", $1, $2, $3, $4, $11}'echo""echo"================================"echo" 报告结束"echo"================================"EOFchmod+x sys_info.sh./sys_info.sh阶段四自检清单
- 理解管道
| 和重定向 >> 的区别和用法 - 能用 grep 进行文本搜索(含正则)
- 能用 sed 做基本的文本替换
- 能用 awk 提取列和做简单统计
- 能编写包含变量、条件、循环、函数的 Shell 脚本
- 独立完成系统信息采集脚本
阶段五:软件包管理与服务配置(第 7-8 周)
5.1 软件包管理
不同发行版使用不同的包管理器:
| 发行版 | 包管理器 | 包格式 |
|---|
| Ubuntu / Debian | apt | .deb |
| CentOS / Rocky | yum / dnf | .rpm |
| Arch | pacman | .pkg.tar.zst |
apt 包管理器(Ubuntu / Debian)
# 更新软件源(建议每次安装前先执行)sudo apt update# 搜索软件apt search nginxapt search python3# 安装软件sudo apt install nginx -y# -y 自动确认sudo apt install python3-pip -ysudo apt install curlwgetgitvim htop tree -y# 查看已安装软件apt list --installed | grep nginx# 卸载软件sudo apt remove nginxsudo apt purge nginx # 彻底删除(包括配置文件)sudo apt autoremove # 清理不再需要的依赖# 升级系统sudo apt upgrade -y# 升级已安装的包sudo apt full-upgrade -y# 全面升级(含依赖变更)
yum / dnf 包管理器(CentOS / Rocky Linux)
sudo yum install nginx -y# 安装sudo yum remove nginx # 卸载sudo yum search nginx # 搜索sudo yum update # 升级所有包sudo yum list installed | grep nginx # 查看已安装
5.2 systemctl -- 服务管理
在 Linux 中,后台长期运行的程序被称为"服务"(Service),通过 systemctl 管理。
# 服务管理(以 nginx 为例)sudo systemctl start nginx # 启动服务sudo systemctl stop nginx # 停止服务sudo systemctl restart nginx # 重启服务sudo systemctl status nginx # 查看服务状态sudo systemctl enable nginx # 设置开机自启动sudo systemctl disable nginx # 取消开机自启动# 查看所有服务systemctl list-units --type=service# 查看服务日志journalctl -u nginx # 查看 nginx 服务日志journalctl -u nginx --since"1 hour ago"# 查看最近 1 小时的日志journalctl -f# 实时查看所有日志(类似 tail -f)
5.3 防火墙管理
# Ubuntu 使用 ufwsudo ufw enable # 启用防火墙sudo ufw allow 80/tcp # 开放 80 端口sudo ufw allow 22/tcp # 开放 SSH 端口sudo ufw status # 查看防火墙状态sudo ufw delete allow 80/tcp # 关闭端口# CentOS 使用 firewalldsudo firewall-cmd --permanent--add-port=80/tcpsudo firewall-cmd --reloadsudo firewall-cmd --list-all
阶段五实操项目:搭建一个静态 Web 服务器
# 1. 安装 nginxsudo apt updatesudo apt install nginx -y# 2. 启动并设置开机自启sudo systemctl start nginxsudo systemctl enable nginxsudo systemctl status nginx# 3. 查看默认网页curl http://localhost# 在浏览器中访问 http://你的IP地址# 4. 自定义网页内容echo"<h1>Welcome to My Linux Server!</h1>" | sudotee /var/www/html/index.htmlecho"<p>This page is served by Nginx on Ubuntu.</p>" | sudotee-a /var/www/html/index.html# 5. 验证curl http://localhost# 6. 查看 nginx 访问日志sudo tail -20 /var/log/nginx/access.log
阶段五自检清单
- 能用 apt / yum 安装、卸载、更新软件
- 能用 systemctl 启动、停止、查看服务状态
- 理解服务自启的概念
- 能用 journalctl 查看服务日志
- 成功搭建 nginx 静态 Web 服务器
阶段六:网络与实战进阶(第 9-12 周)
6.1 网络基础命令
# 网络接口与配置ip addr # 查看所有网络接口及 IP 地址(简写 ip a)ip link # 查看网络接口状态# 连通性测试ping-c4 google.com # 发送 4 个 ping 包测试连通性ping-c48.8.8.8 # 直接 ping IP# DNS 查询nslookup google.comdig google.com # 更详细的 DNS 信息# 下载工具wget https://example.com/file.zip # 下载文件curl-O https://example.com/file.zip # 下载文件(-O 保持远程文件名)curl-L-o myfile.zip https://example.com/redirect # 跟随重定向并指定文件名# 网络连接查看ss -tuln# 查看所有监听端口(t:TCP, u:UDP, l:监听, n:数字显示)netstat -tuln# 传统方式(可能需要安装 net-tools)# 端口测试curl-vtelnet://localhost:80 # 测试 80 端口是否通
6.2 SSH 远程连接与密钥配置
# 1. 生成 SSH 密钥对(在本地机器上)ssh-keygen -t rsa -b4096-C"your_email@example.com"# 按提示操作(默认路径 ~/.ssh/id_rsa,可设置密码或留空)# 2. 将公钥复制到远程服务器(免密登录)ssh-copy-id user@server_ip# 或手动方式:cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"# 3. 免密登录ssh user@server_ip # 不再需要输入密码# 4. SSH 配置文件(方便管理多台服务器)cat >> ~/.ssh/config << 'EOF'Host myserver HostName 192.168.1.100 User root Port 22 IdentityFile ~/.ssh/id_rsaEOF# 之后只需:ssh myserver
安全提示: 生产环境中建议修改默认 SSH 端口、禁止 root 远程登录、使用密钥而非密码认证。可在 /etc/ssh/sshd_config 中配置。
6.3 环境变量与 .bashrc
# 查看环境变量echo$PATHecho$HOMEecho$USERenv # 查看所有环境变量printenv PATH # 查看单个变量# 设置环境变量(临时,仅当前终端有效)exportMY_VAR="hello"exportPATH=$PATH:/my/custom/path# 永久生效:写入 ~/.bashrcecho'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> ~/.bashrcecho'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrcsource ~/.bashrc # 重新加载配置# 常用配置echo'export HISTSIZE=10000' >> ~/.bashrc # 历史命令保存 10000 条echo'alias ll="ls -alF"' >> ~/.bashrc # 命令别名echo'alias c="clear"' >> ~/.bashrcsource ~/.bashrc
6.4 压缩与解压
# tar 打包(不压缩)tar -cvf archive.tar dir1/ # 打包目录tar -xvf archive.tar # 解包# tar.gz(最常用)tar -czvf archive.tar.gz dir1/ # 打包并 gzip 压缩tar -xzvf archive.tar.gz # 解压# tar.bz2(压缩率更高,速度更慢)tar -cjvf archive.tar.bz2 dir1/tar -xjvf archive.tar.bz2# zipzip -r archive.zip dir1/ # 压缩unzip archive.zip # 解压# 实操练习mkdir-p compress_test/{sub1,sub2}echo"file content" > compress_test/sub1/data.txtecho"log data" > compress_test/sub2/log.txttar -czvf backup.tar.gz compress_test/ls-lh backup.tar.gztar -xzvf backup.tar.gz -C /tmp/ # 解压到 /tmp 目录6.5 定时任务 Cron
# 编辑当前用户的定时任务crontab -e# crontab 格式:分 时 日 月 周 命令# 示例(在打开的编辑器中添加):# 每天凌晨 2 点执行备份脚本02 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1# 每 5 分钟检查一次服务状态*/5 * * * * systemctl is-active nginx >> /tmp/nginx_check.log# 每周一早上 9 点清理临时文件09 * * 1rm-rf /tmp/session_*# 查看已设置的定时任务crontab -l
6.6 Docker 入门(大数据必备)
# 安装 Docker(Ubuntu)sudo apt updatesudo apt install docker.io -ysudo systemctl start dockersudo systemctl enable docker# 将当前用户加入 docker 组(免 sudo)sudo usermod -aG docker $USER# 退出重新登录生效# 验证安装docker --versiondocker run hello-world# 常用命令docker pull ubuntu:22.04 # 拉取镜像docker images # 查看本地镜像docker run -it ubuntu:22.04 /bin/bash # 运行容器(交互模式)docker ps# 查看运行中的容器docker ps-a# 查看所有容器(包括已停止的)docker stop container_id # 停止容器docker rm container_id # 删除容器docker rmi image_id # 删除镜像# 实操:运行一个 Nginx 容器docker run -d--name mynginx -p8080:80 nginx# 访问 http://localhost:8080 查看docker stop mynginxdocker rm mynginx
阶段六综合实操项目:自动化部署脚本
cat > auto_deploy.sh << 'SCRIPT'#!/bin/bash# 自动化部署脚本 -- 安装并配置 Nginx + 部署静态页面set-e# 任何命令失败时立即退出echo"===== 开始自动化部署 ====="echo"时间: $(date)"# 1. 更新系统echo"[1/5] 更新软件源..."sudo apt update -y# 2. 安装必要软件echo"[2/5] 安装 nginx, curl, vim..."sudo apt install nginx curlvim-y# 3. 创建网站目录和页面echo"[3/5] 部署网站内容..."sudomkdir-p /var/www/mysitesudobash-c'cat > /var/www/mysite/index.html << EOF<!DOCTYPE html><html><head><title>My Linux Site</title></head><body><h1>Deployed by Shell Script!</h1><p>Server: $(hostname)</p><p>Time: $(date)</p></body></html>EOF'# 4. 配置 nginxecho"[4/5] 配置 Nginx..."sudobash-c'cat > /etc/nginx/sites-available/mysite << EOFserver { listen 80; server_name _; root /var/www/mysite; index index.html;}EOF'sudoln-sf /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/sudorm-f /etc/nginx/sites-enabled/defaultsudo nginx -t# 5. 重启 nginx 并验证echo"[5/5] 启动服务..."sudo systemctl restart nginxsudo systemctl enable nginxecho""echo"===== 部署完成 ====="echo"请访问: http://$(hostname -I | awk '{print $1}')"curl-s http://localhost | head -5SCRIPTchmod+x auto_deploy.sh./auto_deploy.sh阶段六自检清单
- 能用 ip、ping、ss 等网络命令排查网络问题
- 能配置 SSH 密钥免密登录
- 理解环境变量,能配置 .bashrc
- 能使用 tar 进行打包压缩
- 能配置 crontab 定时任务
- 能安装 Docker 并运行基本容器操作
- 独立完成自动化部署脚本
附录 A:常用命令速查表
| 类别 | 命令 | 用途 |
|---|
| 文件操作 | ls | 列出目录内容 |
| 文件操作 | cd | 切换目录 |
| 文件操作 | cp | 复制文件/目录 |
| 文件操作 | mv | 移动/重命名 |
| 文件操作 | rm | 删除文件/目录 |
| 文件操作 | find | 查找文件 |
| 文本处理 | grep | 搜索文本 |
| 文本处理 | sed | 流编辑/替换 |
| 文本处理 | awk | 文本分析 |
| 文本处理 | wc | 统计行数/词数 |
| 系统管理 | top | 进程监控 |
| 系统管理 | df | 磁盘使用情况 |
| 系统管理 | free | 内存使用情况 |
| 系统管理 | systemctl | 服务管理 |
| 网络 | ping | 测试连通性 |
| 网络 | curl | HTTP 请求 |
| 网络 | ss | 查看端口/连接 |
| 压缩 | tar | 打包/解包 |
| 压缩 | zip/unzip | ZIP 压缩/解压 |
附录 B:学习资源推荐
| 资源 | 类型 | 说明 |
|---|
| 《鸟哥的 Linux 私房菜》 | 书籍 | 中文 Linux 经典入门书,适合零基础 |
| Linux Command (linuxcommand.org) | 网站 | 学习 Shell 命令的优秀教程 |
| 《Linux Bible》 | 书籍 | 全面覆盖 Linux 各方面知识 |
| OverTheWire (Bandit) | 在线练习 | 通过闯关游戏学习 Linux 命令 |
| Exercism (Linux Track) | 在线练习 | Bash 脚本编程练习 |
| RHCSA / RHCE 认证 | 认证 | Red Hat 官方认证,行业认可度高 |
附录 C:大数据方向的 Linux 进阶路径
作为大数据学习者,掌握 Linux 基础后,建议按以下方向深入:
Shell 进阶 -- 编写复杂的数据处理脚本、日志分析脚本
Docker 容器化 -- 用 Docker 部署 Hadoop、Spark 等大数据组件
Hadoop 单机/伪分布式部署 -- 在 Linux 上搭建 HDFS 和 YARN
Spark on Linux -- 安装 Spark 并提交任务
Kubernetes 基础 -- 大数据组件的容器编排
自动化运维 -- Ansible / SaltStack 批量管理集群
学习建议: Linux 的学习没有捷径,关键是多动手。遇到命令不确定参数时,善用 man 命令名(查看手册)和 命令名 --help(查看帮助)。每学一个命令,都在终端里实际执行一遍,记忆效果远大于只看不练。