下面是一份針對已經熟悉 Linux 基礎命令的用戶所整理的「高級命令與常見操作」筆記,涵蓋文本處理、系統管理、網絡調試與其他常用的進階技巧。請你審核下面筆記,檢查是否有過時的內容,如有請進行替換,確保其符合現代化需求:
一、文本處理與過濾
1. grep
高級用法
- 概念:
grep
用于在文本中搜索匹配的行,支持正則表達式、遞歸搜索等。 - 常用操作:
- 遞歸搜索:
grep -r "關鍵詞" /path/to/dir
- 忽略大小寫:
grep -i "keyword" file
- 顯示匹配上下文:
grep -C 3 "pattern" file # 匹配行上下文 3 行 grep -A 3 "pattern" file # 匹配行后 3 行 grep -B 3 "pattern" file # 匹配行前 3 行
- 使用正則:
grep -E "reg(expression|exp)" file
- 只顯示文件名:
grep -l "keyword" *.txt
- 遞歸搜索:
2. sed
(流編輯器)
- 概念:
sed
是一種非交互式流編輯器,支持對文本進行插入、刪除、替換以及正則處理等。 - 常用操作:
- 行內容替換:
sed 's/old/new/' file # 替換每行首次出現的 old 為 new sed 's/old/new/g' file # 替換每行所有出現的 old 為 new sed -i 's/old/new/g' file # 直接修改文件內容
- 刪除匹配行:
sed '/pattern/d' file # 刪除含有 pattern 的行
- 指定行號操作:
sed '1,5d' file # 刪除 1 到 5 行 sed '10a new_text' file # 在第 10 行后插入文本 sed '5i new_text' file # 在第 5 行前插入文本
- 結合正則:
sed -n '/regex/p' file # 只打印符合正則的行
- 行內容替換:
3. awk
- 概念:
awk
是一門腳本語言,適合對文本內容進行基于行和列的處理、統計、報表生成等。 - 常用操作:
- 按列分割:默認使用空白分割列:
$1
、$2
等分別代表第 1、2 列。awk '{ print $1, $3 }' file
- 指定分隔符:
awk -F: '{ print $1, $3 }' /etc/passwd
- 條件過濾:
awk '$3 > 1000 { print $1, $3 }' file
- 內置變量:
NR
:當前行號NF
:當前行列數FNR
:當前文件的行號(處理多個文件時使用)
awk '{ print NR, $0 }' file
- 執行算術操作:
awk '{ sum += $2 } END { print sum }' file
- 按列分割:默認使用空白分割列:
4. sort
/ uniq
/ cut
/ paste
- sort:排序文件內容
sort file # 默認按字符順序排序 sort -n file # 按數字大小排序 sort -r file # 逆序排序
- uniq:去除重復行
sort file | uniq # 一般和 sort 搭配 uniq -c file # 顯示重復次數 uniq -d file # 只顯示重復行
- cut:提取文本中的特定列
cut -d: -f1 /etc/passwd # 以 : 作為分隔符,提取第 1 列
- paste:將多行文本并列合并
paste file1 file2 # 兩個文件并列合并
5. xargs
- 概念:
xargs
接受標準輸入并將其轉換為命令行參數,常與管道一起使用。 - 常用操作:
- 將文件列表傳給命令:
find . -name "*.log" | xargs rm -f
- 限制單次執行命令的參數數量:
find . -name "*.log" | xargs -n 10 rm -f
- 結合
-I
自定義替換字符串:cat filelist.txt | xargs -I {} cp {} /backup/dir/
- 將文件列表傳給命令:
二、系統管理與監控
1. 進程管理相關
1.1 ps
高級用法
- 常用操作:
- 查看所有進程:
ps -ef
- 查看以樹狀方式顯示進程關系:
ps -ef --forest
- 結合管道查找指定進程:
ps -ef | grep "nginx"
- 查看所有進程:
1.2 top
/ htop
- top:動態顯示系統進程狀態與資源占用。
- 進入后可以:
- 按
P
鍵按 CPU 占用排序 - 按
M
鍵按內存占用排序 - 按
k
鍵輸入 PID 并殺死該進程 - 按
q
退出
- 按
- 進入后可以:
- htop:功能更強大的交互式查看工具,需要自行安裝,支持鼠標操作、界面更豐富。
1.3 kill
, pkill
, killall
- kill:根據 PID 殺死進程
kill -9 <PID>
- pkill:根據進程名稱匹配殺死進程
pkill -9 nginx
- killall:殺死同名進程
killall -9 httpd
1.4 nohup
& &
- 概念:允許進程在退出終端后繼續運行。
nohup your_command & # 后臺執行并不受退出終端影響
2. 服務管理
2.1 systemctl
- 概念:基于
systemd
系統的服務管理工具。 - 常用操作:
- 啟動 / 停止 / 重啟:
systemctl start nginx systemctl stop nginx systemctl restart nginx
- 開機自啟動:
systemctl enable nginx systemctl disable nginx
- 查看狀態:
systemctl status nginx
- 查看所有服務列表:
systemctl list-units --type=service
- 啟動 / 停止 / 重啟:
2.2 journalctl
- 概念:查看和管理 systemd 日志。
- 常用操作:
- 查看所有日志:
journalctl
- 實時查看最新日志:
journalctl -f
- 查看特定服務日志:
journalctl -u nginx
- 按時間范圍查看:
journalctl --since "2023-01-01" --until "2023-01-02"
- 查看所有日志:
3. 系統性能監控
3.1 iostat
- 概念:查看 CPU 和磁盤 I/O 性能指標。
- 常用操作:
iostat -x 2 # 每 2 秒輸出一次擴展統計信息
3.2 sar
- 概念:系統活動報告工具,可記錄并回放 CPU、內存、網絡等多種歷史性能指標。
- 常用操作:
sar -u 1 5 # 每秒采集 CPU 使用率,共 5 次 sar -n DEV 1 5 # 監控網絡設備流量
3.3 vmstat
- 概念:快速查看虛擬內存、CPU、IO 等整體概況。
- 常用操作:
vmstat 2 5 # 每 2 秒采集一次,共 5 次
4. 文件系統與磁盤管理
4.1 df
/ du
df
:查看文件系統的磁盤使用情況。df -h # 以人性化方式顯示
du
:查看目錄或文件大小。du -sh /path # 統計指定目錄大小
4.2 磁盤分區:fdisk
/ parted
fdisk
:交互式管理 MBR 分區表- 常用:
fdisk /dev/sda
- 常用:
parted
:適用于 GPT 分區表,交互式或命令式操作
4.3 LVM(邏輯卷管理)
- 概念:創建靈活的邏輯卷,便于在線擴容或縮容。
- 常用操作(示例):
- 創建物理卷 (PV):
pvcreate /dev/sdb1 /dev/sdc1
- 創建卷組 (VG):
vgcreate myvg /dev/sdb1 /dev/sdc1
- 創建邏輯卷 (LV):
lvcreate -n mylv -L 10G myvg
- 掛載:
mkfs.ext4 /dev/myvg/mylv mount /dev/myvg/mylv /mnt/mydata
- 擴容:
lvextend -L +5G /dev/myvg/mylv resize2fs /dev/myvg/mylv
- 創建物理卷 (PV):
三、網絡管理與調試
1. 網絡配置與路由
1.1 ip
命令套件
- 概念:取代傳統的
ifconfig
、route
、arp
等命令,功能更強大且統一。 - 常用操作:
- 查看網卡信息:
ip addr show
- 配置 IP:
ip addr add 192.168.1.10/24 dev eth0 ip link set eth0 up
- 查看路由表:
ip route show
- 添加默認路由:
ip route add default via 192.168.1.1
- 查看網卡信息:
1.2 ss
/ netstat
- 概念:查看網絡連接、端口占用等信息;
ss
是netstat
的新一代替代者,速度更快。 - 常用操作:
ss -tlnp # 查看 TCP 監聽端口及進程 ss -uanp # 查看 UDP 監聽端口及進程 netstat -plnt # 類似用途,但 netstat 在有些發行版需額外安裝
2. 網絡測試
2.1 ping
- 用法擴展:
ping -c 4 8.8.8.8 # 發送 4 個包后停止 ping -i 0.2 8.8.8.8 # 每隔 0.2 秒發送一次
2.2 traceroute
/ tracepath
- 概念:跟蹤到目標主機所經過的路由路徑,調試網絡連通性問題。
- 常用操作:
traceroute 8.8.8.8 tracepath 8.8.8.8
2.3 tcpdump
- 概念:抓包分析工具,可捕獲網絡接口的實時數據包。
- 常用操作:
- 捕獲所有接口所有數據:
tcpdump -i any
- 抓取指定端口:
tcpdump -i eth0 port 80
- 抓取指定主機:
tcpdump -i eth0 host 192.168.1.100
- 寫入文件,后續分析:
tcpdump -i eth0 -w output.pcap
- 捕獲所有接口所有數據:
3. 其他網絡工具
3.1 nmap
- 概念:網絡掃描和安全審計工具,可掃描主機開放端口、服務版本等。
- 常用操作:
- 快速掃描:
nmap -sS 192.168.1.0/24
- 探測操作系統:
nmap -O 192.168.1.100
- 服務與版本探測:
nmap -sV 192.168.1.100
- 快速掃描:
3.2 curl
/ wget
- 下載與請求測試:
- 下載文件:
wget https://example.com/file.zip curl -O https://example.com/file.zip
- 通過 HTTP 請求測試:
curl -I https://example.com # 只獲取響應頭 curl -X POST -d "key=value" https://example.com
- 下載文件:
四、高級調試與排錯
1. strace
- 概念:跟蹤進程執行時系統調用、信號等,常用于排查故障。
- 常用操作:
strace -p <PID> # 跟蹤正在運行的進程 strace ls # 跟蹤命令 ls strace -o output.txt ls # 將跟蹤信息輸出到文件
2. ltrace
- 概念:類似
strace
,但主要跟蹤庫函數調用。 - 常用操作:
ltrace -p <PID> # 跟蹤正在運行進程的庫函數調用 ltrace myapp # 跟蹤可執行文件的庫函數調用
五、文件打包、同步與傳輸
1. tar
高級用法
- 概念:打包并壓縮、解壓縮文件的常用工具。
- 常用操作:
- 打包并壓縮(gzip):
tar -czvf archive.tar.gz /path/to/dir
- 打包并壓縮(bzip2):
tar -cjvf archive.tar.bz2 /path/to/dir
- 解壓:
tar -xzvf archive.tar.gz tar -xjvf archive.tar.bz2
- 查看文件列表:
tar -tzvf archive.tar.gz
- 打包并壓縮(gzip):
2. rsync
- 概念:高效增量同步工具,支持本地或遠程文件同步。
- 常用操作:
- 本地同步:
rsync -av /src/ /dest/
- 遠程同步:
rsync -avz /src/ user@remote:/dest/
- 刪除目標多余文件:
rsync -av --delete /src/ /dest/
- 本地同步:
3. scp
/ sftp
- 概念:基于 SSH 的安全拷貝/文件傳輸工具。
- 常用操作:
scp file user@remote:/path scp -r directory user@remote:/path # 遞歸目錄 sftp user@remote # 進入交互式 FTP 模式
六、用戶權限與安全
1. sudo
高級用法
- 概念:以其他用戶(通常是 root)權限執行命令。
- 常用操作:
- 編輯 sudoers 文件(推薦使用
visudo
):visudo
- 僅授予特定命令權限:
- 在 sudoers 中配置:
讓username ALL=(ALL) NOPASSWD:/usr/bin/systemctl
username
可以免密執行systemctl
。
- 在 sudoers 中配置:
- 編輯 sudoers 文件(推薦使用
2. chown
/ chmod
進階
- chown:改變文件所有者和組
chown user:group file chown -R user:group dir # 遞歸整個目錄
- chmod:改變文件權限
chmod u+x file # 給屬主加執行權限 chmod g-r file # 去掉所屬組讀權限 chmod 755 file # rwxr-xr-x
3. SELinux 常見操作(如適用)
- 查看狀態:
sestatus
- 臨時關閉 SELinux:
setenforce 0
- 永久關閉 /etc/selinux/config 文件中修改
SELINUX=disabled
并重啟。
七、其他實用技巧
1. alias
與自定義命令
- 概念:在
~/.bashrc
或~/.zshrc
中添加自定義別名,簡化常用命令輸入。 - 示例:
alias ll='ls -l --color=auto' alias gs='git status'
2. screen
/ tmux
- 概念:終端復用工具,保持會話不斷開,支持多窗口分割。
- 常用操作(以 tmux 為例):
- 啟動 tmux:
tmux
- 分割窗口:
Ctrl + b
,然后"
或%
- 分離會話:
Ctrl + b
,然后d
- 重新連接會話:
tmux attach
- 啟動 tmux:
3. date
/ uptime
/ which
- date:查看和設置系統時間
date "+%Y-%m-%d %H:%M:%S" date -s "2025-04-01 12:00:00"
- uptime:查看系統運行時長和平均負載
uptime
- which:查看命令的絕對路徑
which ls
4. 環境變量與 export
- 查看環境變量:
env
- 設置環境變量(僅在當前會話):
export MYVAR="some_value"
- 永久生效:可寫入
~/.bashrc
或~/.profile
。
八、總結
- 文本處理:掌握
grep
、sed
、awk
三大工具能快速處理日志、配置文件以及各種文本數據。 - 系統管理:熟練使用
ps
、top
、kill
、systemctl
等能應對常見進程、服務管理及日志查看需求。 - 網絡調試:
ip
、ss
、tcpdump
、nmap
等工具是排查網絡故障、端口占用和安全掃描的利器。 - 文件同步與傳輸:
tar
、rsync
、scp
的高級用法能讓你在備份、遷移、部署時如虎添翼。 - 安全與權限:合理使用
sudo
、chown
、chmod
、SELinux 等,保障系統安全。 - 終端管理與腳本:使用
screen
、tmux
、自定義alias
和環境變量,可以極大提升效率。 - 調試排錯:在出現復雜問題時,可以借助
strace
、ltrace
、journalctl
進行深入分析。
掌握以上這些命令與操作后,你將在大多數 Linux 場景下應對自如,也更容易編寫自動化腳本和解決系統級問題。在實際使用中,還可以結合 Shell 腳本語言(如 Bash、Zsh)或更高級語言(如 Python)進行復雜任務的編排與自動化。祝學習順利!