一、Linux 安装与发行版选择
关于操作系统种类:
1)基于 Linux 内核的操作系统
-
Ubuntu、Debian、Kali、CentOS、RHEL、Arch、Android、Alpine、OpenWRT 等
-
特点:开源、稳定、安全、广泛使用于服务器与开发领域
2)基于 Windows NT 内核
-
Windows 10/11、Windows Server 系列
-
特点:兼容性强、图形界面友好、广泛用于办公/日常
3)基于 Darwin(Unix)的系统
-
macOS、iOS、iPadOS
-
特点:苹果封闭生态,安全性强,用户体验佳
4)BSD 系统
-
FreeBSD、OpenBSD、NetBSD、TrueNAS
-
特点:比 Linux 更接近传统 UNIX,稳定性极高
5)基于 Microkernel 或自研内核
-
MINIX(教学用)、Redox OS(Rust 写的)、Fuchsia(谷歌开发中)
-
特点:多为科研或探索性系统
1.1 Linux发行版概述
Linux并非单一系统,而是由许多不同的“发行版”(Distribution,简称Distro)组成。每个发行版都是基于Linux内核的操作系统,但在软件包管理、系统架构、默认配置和目标用户群等方面有所不同。
1.2 三大常见发行版介绍
1)CentOS(Community ENTerprise Operating System)
-
背景:CentOS 是基于 Red Hat Enterprise Linux (RHEL) 的免费版本,几乎完全兼容RHEL,常被用于企业服务器。2020年末,Red Hat 宣布停止维护 CentOS 8,转向 CentOS Stream,导致社区纷纷转向Rocky Linux等替代品。
-
特点:
-
稳定性极高,适合生产环境。
-
版本更新缓慢,注重长期支持。
-
默认使用
yum
(CentOS 7)和dnf
(CentOS 8)包管理器。 -
软件版本偏旧,优先保证兼容性和稳定。
-
-
适用场景:
-
传统企业服务器环境。
-
需要稳定、长期支持的环境。
-
适合运行数据库、Web服务器、大型应用。
-
2)Ubuntu
-
背景:Ubuntu 基于 Debian,是目前使用最广泛的 Linux 发行版之一,特别在桌面和云服务器领域。它有长期支持版本(LTS)和常规版本(通常每6个月发布一次)。
-
特点:
-
社区活跃,文档丰富,支持广泛。
-
软件版本相对较新,适合快速迭代开发。
-
使用
apt
包管理工具,命令简洁。 -
LTS版本提供长达5年支持,适合服务器部署。
-
-
适用场景:
-
初学者和开发者。
-
服务器环境尤其是云服务器(AWS、Azure等云服务大多支持Ubuntu镜像)。
-
桌面操作系统。
-
3)Rocky Linux
-
背景:Rocky Linux 由CentOS创始人之一Gregory Kurtzer发起,目的是接替CentOS成为免费的RHEL克隆版,定位企业级替代品。Rocky Linux 1.0 发布于2021年,迅速获得企业和社区支持。
-
特点:
-
与 RHEL 100%二进制兼容。
-
稳定性和长期支持。
-
包管理和命令与 CentOS 一致(yum/dnf)。
-
适合迁移CentOS用户。
-
-
适用场景:
-
需要企业级稳定环境的用户。
-
希望免费获得类似RHEL的系统支持。
-
迁移自CentOS 7/8的用户。
-
1.3 发行版对比总结
特性 | CentOS | Ubuntu | Rocky Linux |
---|---|---|---|
内核版本 | 较旧,稳定 | 较新,更新快 | 与CentOS类似,稳定 |
包管理 | yum/dnf | apt | yum/dnf |
社区支持 | 稳定但较小 | 活跃,资源丰富 | 新兴,逐渐扩大 |
目标用户 | 企业服务器 | 桌面及云服务器 | 企业服务器 |
版本更新频率 | 低,LTS支持长 | LTS(5年支持)和普通版本 | 低,长期支持 |
适合初学者 | 中等 | 高 | 中等 |
1.4 在本机创建虚拟机安装linux操作系统
一些定义:
现在用的是 Windows 电脑(物理机)
→ 安装 VMware 软件(虚拟机软件)
→ 用 VMware 创建一个虚拟机
→ 在虚拟机中安装 Ubuntu(Linux系统)
→ 然后就能用 Linux 系统了,而且不会影响本机系统
名称 | Linux | 虚拟机 |
---|---|---|
定义 | 一种开源的操作系统(比如 Ubuntu、CentOS) | 一种用于模拟计算机系统的软件环境(如 VMware、VirtualBox) |
本质 | 操作系统 | 软件模拟的计算机 |
运行位置 | 安装在物理机或虚拟机上运行 | 安装在物理机上的软件,运行一个或多个虚拟的“计算机” |
作用 | 提供系统内核、Shell、驱动、应用支持 | 模拟一台或多台计算机,让你运行多个系统 |
操作流程图
[下载 VMware + ISO] ↓
[创建虚拟机] ↓
[加载 ISO 镜像并安装 Linux] ↓
[安装后配置:VM Tools、软件、用户设置]
1.4.1 步骤一:准备材料
名称 | 说明 |
---|---|
VMware Player | 免费虚拟机软件,安装于本机 |
Linux 镜像 ISO | 推荐 Ubuntu 22.04 LTS 或 Rocky Linux 9 |
VMware Workstation Player 下载地址(免费版):
https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion
下载步骤:
-
打开链接后点击
Download Now
-
选择你的平台(Windows 或 Linux)
-
下载
.exe
安装程序(Windows)或.bundle
安装程序(Linux)
常见 Linux 发行版 ISO 下载地址:
1. Ubuntu:https://ubuntu.com/download/desktop(推荐 LTS 稳定版)
推荐版本:Ubuntu 22.04 LTS
2. Debian:https://www.debian.org/distrib/
推荐版本:Debian 12 (Bookworm)
3. CentOS:https://www.centos.org/download/
4. Rocky Linux(兼容 RHEL):https://rockylinux.org/download
推荐版本:Rocky Linux 9.4
5. AlmaLinux(兼容 RHEL):https://almalinux.org/download.html
6. Kali Linux(用于安全测试):https://www.kali.org/get-kali/
7. Arch Linux(高级用户):https://archlinux.org/download/
推荐下载镜像网站(速度快):
-
清华大学开源镜像站(适合中国大陆用户):https://mirrors.tuna.tsinghua.edu.cn/
-
阿里云镜像站:https://developer.aliyun.com/mirror/
1.4.2 步骤二:创建虚拟机并安装 Linux 系统
1)打开 VMware Workstation Player
启动软件后点击首页的:Create a New Virtual Machine
(创建新的虚拟机)
2)选择安装来源
选择:
-
Installer disc image file (iso)
并点击Browse
选择你下载好的.iso
镜像文件(如ubuntu-22.04.4-desktop-amd64.iso
)
3)选择客户机操作系统类型
-
选择:
-
Linux
-
版本:
Ubuntu 64-bit
或CentOS 64-bit
-
4)命名虚拟机 & 选择位置
-
名称随便填:例如
ubuntu_vm
-
存储路径:可以默认,也可以放到 D:\VMs 这样的专用目录中
5)设置磁盘容量
-
建议:
-
大小 20 GB 以上
-
勾选:
Store virtual disk as a single file
(也可以分多个文件)
-
6)自定义硬件(点击 Customize Hardware)
-
内存:建议至少 2048 MB(2GB)或更多
-
CPU:至少 2 个核心
-
网络:选择 NAT 模式(默认)即可
-
显卡/USB等可以保持默认
7)创建完成,点击 “Finish”
8)启动虚拟机:点击左侧虚拟机,点击“▶ 启动此虚拟机”
1.4.3 步骤三:Linux 安装过程(以 Ubuntu 为例)
1)语言选择:选择中文或英文,点击 “安装 Ubuntu”
2)配置键盘:默认即可(推荐:English(US))
3)网络设置:可以连接网络,也可以跳过,之后手动连接。
4)安装类型选择
-
正常安装
-
安装第三方软件(勾选)
-
磁盘选择:“清除磁盘并安装 Ubuntu” (注意:此处是虚拟磁盘,不影响你电脑本地磁盘)
5)创建账户
填写:
-
名字:随便
-
用户名:如
hacker
-
密码:123456(你自己设置)
6)开始安装:点击继续,安装过程需要几分钟。
7)安装完成 → 重启系统:系统提示时选择“重启”,第一次启动进入桌面系统
1.5 linux系统安装后的初始化操作
1.5.1 安装 VMware Tools(增强鼠标支持、拖拽功能)
点击 VMware 上菜单:
虚拟机 → 安装 VMware Tools
然后在虚拟机中打开挂载的光盘:
cd /media/用户名/VMware\ Tools/
cp VMwareTools-xxx.tar.gz ~/
tar -zxvf VMwareTools-xxx.tar.gz
cd vmware-tools-distrib
sudo ./vmware-install.pl
一路回车即可完成。
1.5.2 更新系统和安装常用工具
sudo apt update && sudo apt upgrade -y # Ubuntu
sudo yum update -y # CentOS/Rocky
安装一些工具:
sudo apt install -y vim curl net-tools git htop
1.5.3 安装中文支持
sudo apt install language-pack-zh-hans
然后:
sudo dpkg-reconfigure locales
选择 zh_CN.UTF-8
保存,重启系统即可。
1.5.4 设置 root 用户
sudo passwd root
然后设置密码,即可用 su
切换到 root
1.5.5 设置静态 IP
在 /etc/netplan/*.yaml
文件中修改:
network:version: 2ethernets:ens33:dhcp4: noaddresses: [192.168.1.100/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 114.114.114.114]
保存后执行:
sudo netplan apply
1.5.6 共享文件夹功能
VMware设置共享文件夹 → 安装 open-vm-tools
:
sudo apt install open-vm-tools open-vm-tools-desktop
sudo reboot
二、基础命令
2.1 文件操作命令详解
命令 | 功能 | 示例 |
---|---|---|
ls | 列出目录内容 | ls -l /etc (长格式列出 /etc 下内容) |
cd | 切换目录 | cd /var/log (进入 /var/log) |
pwd | 显示当前目录 | pwd (返回 /home/user ) |
touch | 创建空文件 | touch a.txt |
mkdir | 创建新目录 | mkdir new_dir |
rm | 删除文件或目录 | rm file.txt ;rm -rf dir/ |
cp | 复制文件或目录 | cp a.txt b.txt ;cp -r dir1 dir2 |
mv | 移动/重命名文件 | mv a.txt /tmp/ ;mv old.txt new.txt |
cat | 显示文件内容 | cat file.txt |
more / less | 分页查看内容 | less /var/log/syslog |
head / tail | 显示头部/尾部行 | head -n 10 a.log ;tail -f a.log |
file | 判断文件类型 | file /bin/ls (返回 ELF 可执行文件) |
2.2 通配符(通用匹配符)
通配符用于匹配多个文件名,是 bash
中文件操作和脚本批量处理的重要利器。
通配符 | 说明 | 示例 |
---|---|---|
* | 匹配任意长度任意字符 | *.txt (所有 txt 文件) |
? | 匹配单个任意字符 | a?.sh (如:a1.sh、ab.sh) |
[] | 匹配指定范围内任意单字符 | file[1-3].txt (file1、file2) |
[^] | 匹配不在范围内的任意字符 | file[^1-3].txt (排除1-3) |
2.3 管道命令与重定向
管道和重定向是 Linux 强大的命令组合工具,可以实现“数据流传递”。
1)管道符 |
将前一个命令的输出,作为下一个命令的输入。
cat file.txt | grep "error" # 读取 file.txt 文件内容,并通过管道传给 grep,筛选出包含 "error" 字符串的行
ps aux | grep nginx # 查看当前系统所有进程信息,筛选出包含 "nginx" 的进程行,用于查找 nginx 是否在运行
第一个命令等价写法可用 :
grep "error" < file.txt # 等同于 grep "error" file.txt,查找 file.txt 中包含 "error" 的行
2)输出重定向 >
和 >>
符号 | 含义 | 示例 |
---|---|---|
> | 覆盖写入 | echo Hello > a.txt |
>> | 追加写入 | echo World >> a.txt |
3)输入重定向 <
sort < unsorted.txt # 使用输入重定向将 unsorted.txt 文件内容传递给 sort 命令,对内容进行排序并输出
4)错误重定向
command 2> err.log # 执行 command, 将标准错误(stderr,文件描述符2)重定向到文件 err.log,标准输出仍显示在屏幕
command > out 2>&1 # 执行 command, 将标准输出(stdout,文件描述符1)重定向到文件 out,标准错误(2)重定向到标准输出(1)的位置,即两个都写入 out 文件
2.4 组合命令符号(进阶命令流控制)
符号 | 说明 | 示例 |
---|---|---|
; | 顺序执行多个命令 | cd /tmp; ls; pwd |
&& | 前一个成功才执行后一个命令 | mkdir test && cd test |
` | ` |
2.5 文件查找相关命令
1)find
命令(查文件)
find /var -name "*.log" # 按文件名查找
find . -type f -size +10M # 找大于10MB的文件
find . -mtime -7 # 最近7天修改的文件
2)locate
命令(系统索引)
locate nginx.conf # 快速查文件路径(需更新索引:updatedb)
2.6 示例实战组合命令
示例1:查找 /var/log 下最大的日志文件
find /var/log -type f -exec du -h {} + | sort -hr | head -n 10
# 在 /var/log 目录下查找所有文件(不含目录),对每个文件执行 du -h 显示文件大小,
# 然后按文件大小倒序排序(-h 人类可读,-r 逆序),取出前 10 个最大文件
# 每找到一个文件执行一次 echo:
find . -name "*.sh" -exec echo {} \;# 找到多个文件,一次性传给 echo(更快):
find . -name "*.sh" -exec echo {} +
示例2:查看某关键词频次
cat access.log | grep "404" | wc -l
# 读取 access.log 文件内容,通过管道传给 grep,筛选包含 "404" 的行,再传给 wc -l 统计总行数,表示出现 404 的次数
示例3:统计某目录下所有 .sh
文件的总行数
cat *.sh | wc -l
# 将当前目录下所有以 .sh 结尾的文件内容拼接在一起,通过管道传给 wc -l,统计所有 .sh 脚本文件的总行数
三、用户与权限管理
3.1 用户账户管理(useradd / passwd)
1)创建用户 useradd
useradd hacker
默认会在 /home/hacker/
创建用户目录,且不会设置密码,需要用 passwd
设置。
创建用户并指定信息(推荐用法):
useradd -m -s /bin/bash -c "Hack Test" hacker
参数说明:
参数 | 含义 |
---|---|
-m | 自动创建 home 目录 |
-s | 指定 shell(默认 bash) |
-c | 添加备注信息 |
2)设置密码 passwd
passwd hacker
系统将提示你输入密码并确认,密码可用于终端或 SSH 登录。
3)删除用户
userdel hacker # 删除用户(保留文件)
userdel -r hacker # 删除用户及其 home 目录
4)查看当前用户 / 所有用户
whoami # 当前用户名
id hacker # 查看用户 ID、组
cat /etc/passwd # 系统中所有用户
3.2 权限管理(chmod)
Linux 中,每个文件都有三类用户的访问权限:
-
所有者(owner)
-
所属组(group)
-
其他人(others)
权限包括:
权限 | 字母 | 数值 | 作用 |
---|---|---|---|
读 | r | 4 | 查看文件内容 |
写 | w | 2 | 修改或删除 |
执行 | x | 1 | 执行脚本/程序 |
1)chmod
改权限(数值法)
chmod 755 script.sh
解释:
7 = 4+2+1 = rwx(所有者)
5 = 4+0+1 = r-x(组)
5 = 4+0+1 = r-x(其他人)
也可以用符号法:
chmod u+x hello.sh # 给拥有者加执行权限
chmod go-w hello.sh # 去掉组和其他人的写权限
3.3 属主属组管理(chown)
每个文件都有:
-
一个属主(user)
-
一个属组(group)
1)修改属主属组
chown root:root file.txt # 同时改属主和属组
chown hacker file.txt # 只改属主
chown :staff file.txt # 只改属组
递归修改某目录及下所有文件:
chown -R hacker:hacker /home/hacker
3.4 sudo 权限(普通用户执行管理员命令)
1)让用户具备 sudo 权限
usermod -aG sudo hacker # Ubuntu/Debian 系加入 sudo 组
usermod -aG wheel hacker # CentOS/Rocky 中是 wheel 组
修改完后重新登录用户即生效。
2)使用 sudo 运行命令
sudo apt update
sudo systemctl restart nginx
首次使用会提示输入当前用户密码。
3)配置 sudo 权限规则
编辑 sudoers 文件(慎重):
visudo
添加如下行给特定用户全部权限(等价于 root):
hacker ALL=(ALL) ALL
3.5 文件权限实例解读
ls -l
-rwxr-xr-- 1 root root 1234 Jan 1 12:00 run.sh
分解说明:
-
-rwxr-xr--
-
所有者:
rwx
→ 可读、可写、可执行 -
所属组:
r-x
→ 只读、可执行 -
其他人:
r--
→ 只读
-
-
属主:
root
,属组:root
-
大小:1234 字节
-
最后修改时间:Jan 1 12:00
3.6 实战练习
目标 | 操作示例 |
---|---|
创建用户并赋予管理员权限 | useradd hacker && passwd hacker && usermod -aG sudo hacker |
创建 test.sh 并设置仅用户可执行 | touch test.sh && chmod 700 test.sh |
修改文件属主为 hacker:hacker | chown hacker:hacker test.sh |
限制脚本只能由属主运行 | chmod 700 script.sh |
3.6 小结
功能 | 常用命令 |
---|---|
添加用户 | useradd / passwd |
权限控制 | chmod / chown |
用户授权 | usermod -aG sudo / visudo |
用户查看 | id / whoami / /etc/passwd |
四、软件包管理
4.1 Linux 软件包管理两大阵营
发行版 | 包管理器类型 | 使用的命令 | 包后缀 |
---|---|---|---|
CentOS / RHEL / Rocky | RPM 系 | yum / dnf / rpm | .rpm |
Ubuntu / Debian | DPKG 系 | apt / dpkg | .deb |
4.2 YUM(基于 RPM 的高级管理器)
1)安装软件包
yum install nginx -y
说明:
-
yum
会自动解析依赖、联网安装 -
-y
表示自动确认(无交互)
2)卸载软件包
yum remove nginx -y
3)搜索软件包
yum search nginx
yum list | grep nginx
4)更新与升级
yum update # 更新所有
yum update nginx # 更新指定
5)查看已安装包信息
yum info nginx
6)列出已安装的包
yum list installed
7)设置源(重要)
YUM 默认从 /etc/yum.repos.d/*.repo
中读取源配置。
比如阿里云 CentOS 源配置:
# 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak# 下载阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 生成缓存
yum clean all && yum makecache
4.3 RPM(RedHat Package Manager)
RPM 是 .rpm
包的底层安装命令,不负责依赖处理,适合离线环境。
1)安装 .rpm
包
rpm -ivh nginx.rpm
参数 | 含义 |
---|---|
-i | 安装 |
-v | 显示详细信息 |
-h | 显示进度条 |
2)卸载 .rpm
包
rpm -e nginx
注意:必须使用包名,不能写文件路径。
3)查询与验证
rpm -qa # 查询所有已安装包
rpm -q nginx # 是否安装
rpm -ql nginx # 包安装了哪些文件
rpm -qc nginx # 查看配置文件位置
4.4 APT(Debian 系高级包管理器)
Ubuntu 常用,功能等价于 yum。
1)安装包
sudo apt update && sudo apt install nginx -y
2)卸载包
sudo apt remove nginx
sudo apt purge nginx # 连配置文件一起删
3)升级系统
sudo apt upgrade # 升级已安装软件
sudo apt full-upgrade # 升级并处理依赖变动
4)搜索与查看
apt search nginx
apt show nginx
5)查看已安装软件
dpkg -l | grep nginx
4.5 DPKG(底层 .deb 安装工具)
类似于 rpm:
1)安装 .deb
包
sudo dpkg -i xxx.deb
若缺依赖,执行:
sudo apt install -f
2)卸载 .deb
包
sudo dpkg -r nginx
3)查询与列表
dpkg -l # 所有包
dpkg -L nginx # 某包的文件列表
dpkg -S /usr/bin/nginx # 哪个包安装了某文件
4.6 实战练习
练习目标 | 建议命令 |
---|---|
搜索一个软件并安装 | yum search vsftpd && yum install vsftpd -y |
卸载软件并清理配置 | apt purge nginx && apt autoremove |
用 .rpm / .deb 离线装包 | rpm -ivh xxx.rpm / dpkg -i xxx.deb |
换国内源 | Ubuntu:换 /etc/apt/sources.list 为阿里、清华 |
4.7 小结对比表
功能 | YUM(CentOS) | APT(Ubuntu) | RPM / DPKG(底层) |
---|---|---|---|
安装 | yum install xxx | apt install xxx | rpm -ivh xxx.rpm / dpkg -i xxx.deb |
卸载 | yum remove xxx | apt remove xxx | rpm -e xxx / dpkg -r xxx |
更新 | yum update | apt update && upgrade | N/A |
搜索包 | yum search xxx | apt search xxx | `rpm -qa |
查询已安装 | yum list installed | dpkg -l | rpm -qa |
查看包内容 | yum info xxx | apt show xxx | rpm -ql xxx / dpkg -L xxx |
五、计划任务
5.1 Linux 计划任务工具概览
工具 | 作用 | 场景示例 |
---|---|---|
crontab | 周期性执行(分钟、天、月) | 每天 2 点备份数据库 |
at | 执行一次的定时任务 | 明天下午 3 点发通知脚本 |
5.2 Crontab(周期性计划任务)
1)基本语法
crontab -e # 编辑当前用户的计划任务
crontab -l # 查看任务
crontab -r # 删除任务
2)时间格式(最关键)
* * * * * command-to-run
│ │ │ │ │
│ │ │ │ └── 星期几 (0 - 7)(0 和 7 都是星期日)
│ │ │ └──── 月份 (1 - 12)
│ │ └─────── 日 (1 - 31)
│ └───────── 时 (0 - 23)
└─────────── 分钟 (0 - 59)
示例:
时间字段 | 含义 |
---|---|
* * * * * | 每分钟 |
0 0 * * * | 每天凌晨 00:00 |
0 2 * * 1-5 | 每周一到周五 02:00 |
*/5 * * * * | 每 5 分钟 |
30 6 1 * * | 每月 1 日 6:30 |
3)示例任务配置
# 每天 2 点自动执行备份脚本
0 2 * * * /home/hacker/backup.sh# 每隔 10 分钟清理临时目录
*/10 * * * * rm -rf /tmp/*# 每周六中午 12 点执行日志归档
0 12 * * 6 tar -czf /backup/logs.tar.gz /var/log/
4)查看 /var/spool/cron/ 目录
cat /var/spool/cron/用户名
系统级任务在 /etc/crontab
中,也可以写入 /etc/cron.d/
目录。
5)cron 输出重定向
避免任务出错看不到结果:
0 2 * * * /home/hacker/backup.sh >> /home/hacker/backup.log 2>&1
6)定时执行脚本注意点
-
脚本中使用绝对路径(
/usr/bin/python3
) -
文件要有可执行权限(
chmod +x
) -
定义
PATH
变量或使用全路径
5.3 at(一次性计划任务)
1)安装 at
# Ubuntu/Debian
sudo apt install at# CentOS/Rocky
sudo yum install at# 启动 at 服务
sudo systemctl start atd
sudo systemctl enable atd
2)使用 at 添加一次性任务
at 15:30 # 今天下午 3 点半
at now + 1 minute
然后进入交互界面,输入命令:
echo "hello world" > /tmp/test.log
<Ctrl + D> # 输入完成后按 Ctrl+D 结束
3)查看任务队列
atq # 显示当前用户的所有 at 任务
4)删除任务
atrm 3 # 删除任务编号为 3 的任务
5)执行脚本
at now + 2 minutes <<EOF
/home/hacker/task.sh >> /home/hacker/log.txt
EOF
5.4 系统级计划任务位置
路径 | 作用 |
---|---|
/etc/crontab | 系统级 cron 表 |
/etc/cron.d/ | 存放系统 cron 文件 |
/etc/cron.daily/ | 每天执行的脚本 |
/etc/cron.hourly/ | 每小时执行的脚本 |
脚本直接丢进去,系统会自动执行(需可执行权限)。
5.5 实战练习
目标 | 操作命令或配置 |
---|---|
每晚备份数据库 | 0 1 * * * /opt/scripts/mysql_backup.sh |
每周清理日志 | 0 3 * * 0 rm -rf /var/log/* |
设置一次性 5 分钟后关机 | at now + 5 minutes 然后输入 shutdown -h now |
每 10 分钟检测某服务是否挂掉并重启 | */10 * * * * /opt/scripts/monitor_nginx.sh |
5.6 小结对比
工具 | 是否周期性 | 执行时间粒度 | 推荐用途 |
---|---|---|---|
crontab | 周期性 | 到分钟级 | 日常备份、清理、脚本运行 |
at | 仅一次 | 到分钟级 | 临时自动执行、测试脚本 |
六、文件系统与磁盘管理
6.1 文件系统基础概念
Linux 把一切设备都看作文件,包括磁盘。
你插入的硬盘、U盘、分区都必须挂载(mount)后才能访问。
常见设备路径:
-
/dev/sda
:第一块 SATA 磁盘 -
/dev/sda1
:该磁盘的第一个分区 -
/dev/nvme0n1p1
:NVMe 固态磁盘分区 -
/mnt
或/media
:挂载点
6.2 挂载管理(mount & umount)
1)临时挂载(不修改配置文件)
sudo mount /dev/sdb1 /mnt
挂载 /dev/sdb1
到 /mnt
目录
2)卸载挂载点
sudo umount /mnt
3)查看当前所有挂载情况
mount
findmnt
4)开机自动挂载(修改 /etc/fstab
)
添加行到 /etc/fstab
:
/dev/sdb1 /data ext4 defaults 0 2
然后运行:
mount -a # 检查是否有语法错误并立即生效
6.3 磁盘使用情况查看(df、du)
1)查看磁盘整体使用情况(df)
df -h
字段 | 含义 |
---|---|
Filesystem | 分区/挂载的设备路径 |
Size | 分区总大小 |
Used | 已使用空间 |
Avail | 剩余空间 |
Mounted on | 挂载点(路径) |
2)查看某个目录空间占用(du)
du -sh /var/log
-
-s
:总计 -
-h
:人类可读(如 1G、5M)
查看子目录大小:
du -h --max-depth=1 /home
6.4 LVM(逻辑卷管理器)
LVM 让我们可以灵活地 扩容、缩容、快照磁盘空间,适合生产环境。
1)基本概念:
概念 | 说明 |
---|---|
PV (Physical Volume) | 物理卷,即物理硬盘/分区 |
VG (Volume Group) | 卷组,把多个 PV 组合成一组 |
LV (Logical Volume) | 逻辑卷,相当于“虚拟分区”可挂载 |
2)创建 LVM 示例
假设 /dev/sdb
是一块新硬盘:
# 1. 创建物理卷
pvcreate /dev/sdb# 2. 创建卷组
vgcreate myvg /dev/sdb# 3. 创建逻辑卷(10G 大小)
lvcreate -L 10G -n mylv myvg# 4. 格式化
mkfs.ext4 /dev/myvg/mylv# 5. 挂载
mkdir /mnt/lvdata
mount /dev/myvg/mylv /mnt/lvdata
3)LVM 扩容操作
扩容逻辑卷(在线扩容):
# 1. 扩容 5G
lvextend -L +5G /dev/myvg/mylv# 2. 通知文件系统扩展
resize2fs /dev/myvg/mylv # ext4
如果是 XFS 文件系统,使用:
xfs_growfs /mnt/lvdata
4)LVM 查看命令
pvs # 查看所有物理卷
vgs # 查看卷组信息
lvs # 查看逻辑卷信息
6.5 磁盘扩容实战流程(物理/虚拟机)
情景:VMware 或云服务器中添加了新磁盘 /dev/sdc
1)添加新磁盘后识别:
lsblk # 查看是否识别
fdisk -l # 磁盘分区工具
2)分区:
fdisk /dev/sdc
# n:创建新分区
# w:写入
3)格式化:
mkfs.ext4 /dev/sdc1
4)挂载:
mkdir /mnt/newdisk
mount /dev/sdc1 /mnt/newdisk
5)加入 /etc/fstab
实现永久挂载:
echo "/dev/sdc1 /mnt/newdisk ext4 defaults 0 0" >> /etc/fstab
mount -a
6.6 实战练习
目标 | 命令 |
---|---|
查看当前磁盘挂载情况 | df -h / mount |
检查某目录占用最大 | du -h --max-depth=1 /var |
挂载 ISO 文件为光盘 | mount -o loop file.iso /mnt/iso |
创建一个 5G 的 LVM 卷 | pvcreate + vgcreate + lvcreate 三连 |
扩容逻辑卷并生效 | lvextend + resize2fs |
6.7 小结
工具/命令 | 功能 |
---|---|
mount / umount | 挂载/卸载磁盘或目录 |
df -h | 查看磁盘总体使用情况 |
du -sh | 查看目录空间使用情况 |
pvcreate/vgcreate/lvcreate | 创建 LVM 各层级 |
lvextend + resize2fs | LVM 在线扩容 |