一、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 在線擴容 |