Linux 常用命令速查 - 详解

1.cd_切换目录

cd /root	#绝对路径切换
cd 	./root	#相对路径切换
cd ../data  #切换上级目录

2.ls_查看文件目录

参数说明
-l列出长数据穿,包换文件属性权限
-a列出全部文件,(包含隐藏文件)
-d仅列出目录本身(没屌用)
-h将文件容量以可读方式显示
-R递归方式显示

相关命令: tree

以树形结构显示目录结构

tree -N #中文展示
tree -N -L 2 #遍历两级菜单
tree /home --charset=gbk -L 2 #这顶中文编码
tree -aC -L 2 #-a显示所有文件,-C文件与目录清单加上颜色,-L 2遍历两级菜单

3.grep_匹配

grep [选项] "模式" 文件名
类别选项 / 语法说明示例
基本语法grep [选项] '模式' 文件...在文件中搜索匹配“模式”的行grep 'error' log.txt
`commandgrep ‘pattern’`结合管道过滤输出
核心选项-i忽略大小写(ignore case)grep -i 'ERROR' log.txt
-v反向匹配(invert match),输出不匹配的行`grep -v '#
-r-R递归搜索目录中所有文件grep -r 'function' /src/
-l只输出包含匹配项的文件名grep -rl 'TODO' /code/
-L只输出不包含匹配项的文件名grep -L 'completed' *.log
-n显示匹配行的行号grep -n 'fail' log.txt
-c统计匹配行的数量grep -c 'success' log.txt
-o只输出匹配到的部分(而非整行)grep -o '[0-9]\+' file(提取数字)
-w完整单词匹配(word-regexp)grep -w 'root' file(不匹配 rooted
-E使用扩展正则表达式(ERE),等价于 egrep`grep -E 'error
-F将模式视为固定字符串(不解析正则),等价于 fgrepgrep -F '.*' file(搜索字面量 .*
-A N输出匹配行及后 N 行(After)grep -A 2 'error' log.txt
-B N输出匹配行及前 N 行(Before)grep -B 1 'crash' log.txt
-C N输出匹配行及前后 N 行(Context)✅ 调试常用grep -C 3 'exception' log.txt
--color=auto高亮显示匹配文本(现代系统默认)grep --color=auto 'port' config
-q静默模式(quiet),不输出,仅通过退出码判断是否匹配grep -q 'running' status && echo "OK"
正则表达式.匹配任意单个字符grep 'a.c' file(匹配 abc, a2c
^匹配行首grep '^#' file(注释行)
$匹配行尾grep ';$' file(以分号结尾)
*前一个字符 0 次或多次grep 'go*d' file(匹配 gd, god, good
[abc]匹配字符集合中的任意一个grep '[aeiou]' file(元音字母)
[^abc]匹配不在集合中的字符grep '[^0-9]' file(非数字)
\{m,n\}重复 m 到 n 次grep 'a\{2,4\}' file(匹配 aa, aaa, aaaa
$ $分组grep '$$user$$' file
\1, \2引用分组`echo “hello”
\<\>单词边界grep '\<root\>' file(精确匹配单词 root
高频使用场景搜索关键字grep 'error' *.log查找错误日志
忽略大小写搜索grep -i 'warning' log.txt
排除注释和空行`grep -v '^#^$’ config.conf`
递归查找代码grep -rn 'function_name' /path/to/src定位函数定义
提取特定信息grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' log.txt提取 IP 地址
统计出现次数grep -c 'success' log.txt日志分析
查看上下文grep -C 5 'exception' app.log调试程序异常
脚本中条件判断grep -q 'active' status.txt && do_something自动化脚本
搜索固定字符串grep -F 'error[1]' file搜索含特殊字符的字面量

大小忽略用-i 方向筛选-v 行号-n 统计 -c 正则-E 或者egrep

4.cat_查看文件内容

参数说明示例
无参数显示文件内容cat file.txt
-n显示行号(包括空行)cat -n file.txt
-b显示非空行的行号cat -b file.txt
-E--show-ends在每行结尾显示 $ 符号cat -E file.txt
-T--show-tabs将制表符 Tab 显示为 ^Icat -T script.sh
-v--show-nonprinting显示不可见字符(除 Tab 和换行)cat -v binary_file
-A--show-all等价于 -vET,显示所有隐藏字符cat -A file.txt
-s压缩连续空行为单个空行cat -s log.txt

相关命令

tail / head 从头看,从尾看
默认查看5行 -n 可指定查看行数

5.find_查找文件

分类参数/表达式说明示例
路径范围./path/to/dir指定搜索起始目录(可多个)find /home -name "abc"
按名称查找-name "filename"精确匹配文件名(区分大小写)find . -name "*.log"
-iname "filename"不区分大小写的文件名匹配find . -iname "readme*"
按类型查找-type f普通文件find . -type f -name "*.txt"
-type d目录find / -type d -name "bin"
-type l符号链接(软链接)find . -type l
按大小查找-size +10M大于 10MBfind . -size +100M
-size -1k小于 1KBfind /var -size -50k
-size 1G正好 1GB(极少用)find . -size 1G
按时间查找 (天)-mtime -77 天内修改内容find . -mtime +30 → 超过 30 天未改
-atime -11 天内访问过find . -atime 0 → 今天访问
-ctime +55 天前变更属性(权限/所有者)find . -ctime -1 → 最近变更
按分钟查找-mmin -6060 分钟内修改内容find /tmp -amin -5 → 5 分钟内访问
按权限查找-perm 644精确权限匹配find . -perm 755
-perm -u=rw用户有读写权限(符号模式)find . -perm -go=w
按所有者查找-user alice属于用户 alice 的文件find /home -user bob
-group devs属于组 devs 的文件find . -group staff
逻辑操作符-not!取反find . -name "*.tmp" -not -user root
-and(默认)且(可省略)find . -type f -name "*.conf"
-orfind . -name "*.log" -o -name "*.out"
$ $分组(需转义)find . $ -name "*.c" -o -name "*.h" $
常用动作-print输出路径(默认)find . -name "a*" -print
-lsls -l 格式显示find . -size +10M -ls
-delete删除匹配文件(⚠️ 危险!)find /tmp -name "*.tmp" -mtime +7 -delete
-exec cmd {} \;对每个文件执行命令find . -name "*.bak" -exec rm {} \;
-exec cmd {} +批量执行(高效)find . -type f -exec chmod 644 {} +
-ok cmd {} \;执行前提示确认find . -name "*.old" -ok rm {} \;
其他实用选项-empty查找空文件或空目录find . -type f -empty
-maxdepth 2限制最大目录深度find . -maxdepth 1 -name "*.sh"
-prune排除某个目录(常配合 -path 使用)find . -path "./node_modules" -prune -o -name "*.js" -print
高频组合速查
需求命令
查找并删除 7 天前的临时文件find /tmp -name "*.tmp" -mtime +7 -delete
找出大于 100MB 的文件find / -size +100M -ls 2>/dev/null
查找 .sh 文件并添加执行权限find . -name "*.sh" -type f -exec chmod +x {} +
查找某用户最近修改的文件(3天内)find /home -user alice -mtime -3 -ls
排除特定目录搜索find . -path "*/node_modules" -prune -o -name "*.py" -print

6.cp_复制

cp [选项] 源文件/目录	目标文件/目录
#cp不会覆盖目录,也不会递归复制目录内容需要添加-r参数
参数含义使用场景示例
无参数复制文件(不能复制目录)cp file.txt /backup/
-r-R--recursive递归复制目录及其所有内容cp -r myfolder/ backup/
-i--interactive覆盖前提示确认cp -i file.txt dest/ → 防止误覆盖
-f--force强制覆盖目标文件(忽略只读权限等)cp -f config.new config
-u--update仅当源文件比目标新时才复制(增量备份)cp -u *.txt /backup/
-v--verbose显示详细操作过程cp -v file.log /var/log/
-l创建硬链接(而非复制数据)cp -l largefile.dat link.dat
-s创建符号链接(软链接)cp -s /path/to/original link
-a--archive归档模式:保留权限、时间戳、符号链接等 等价于 -dR --preserve=allcp -a /etc /backup_etc/
-d保留符号链接(不复制链接指向的文件)cp -d symlink.txt dest/
--preserve=[属性]指定保留的属性: mode,ownership,timestamps,links,allcp --preserve=mode,timestamps file.txt new.txt
--no-preserve=[属性]明确不保留某些属性cp --no-preserve=ownership file.txt /tmp/
--remove-destination覆盖前先删除目标(避免权限问题)cp --remove-destination old.conf new.conf
常用组合与实用场景
需求命令示例
复制文件并重命名cp file.txt file_backup.txt
复制多个文件到目录cp file1.txt file2.txt /backup/
复制整个目录(推荐归档模式)cp -a /home/user /backup/
复制目录(保留结构)cp -r /src/project /dst/
交互式复制(防误覆盖)cp -ri /data/* /backup/
只复制更新的文件(同步)cp -ru /source/ /destination/
显示复制过程cp -v *.log /var/log/
创建软链接(快捷方式)cp -s /original/path linkname
创建硬链接(节省空间)cp -l hugefile.db backup.db
强制复制并覆盖cp -f config.new /etc/app.conf

7.mv_移动

mv [选项] 源文件/目录 目标文件/目录
#mv 可移动文件,也可以重命名文件或目录
参数含义使用场景示例
无参数移动或重命名文件/目录(默认行为)mv file.txt /backup/mv oldname.txt newname.txt
-i--interactive覆盖前提示确认mv -i file.txt dir/ → 防止误覆盖
-f--force强制移动,不提示(覆盖已有文件)mv -f temp.log /var/log/
-u--update仅当源文件比目标新时才移动(增量更新)mv -u *.log /archive/
-v--verbose显示详细操作过程mv -v *.tmp /tmp/
-n--no-clobber不覆盖已存在的文件(比 -i 更严格)mv -n backup.conf config.conf
常用操作场景与示例
需求命令示例
重命名单个文件mv old.txt new.txt
重命名目录mv myproject/ project_v2/
移动文件到目录mv file.log /var/log/
批量移动文件mv *.txt /docs/
交互式移动(安全)mv -i *.conf /backup/ → 覆盖前会问 overwrite?
强制移动(脚本中常用)mv -f temp/* /tmp/
只移动更新的文件mv -u source/*.log dest/
显示移动过程mv -v data_*.csv /archive/
避免覆盖任何文件mv -n important.txt existing.txt → 若目标存在则跳过

8.rm_删除

参数含义使用示例
无参数删除一个或多个普通文件rm file.txt
-f--force强制删除,不提示;忽略不存在的文件rm -f temp.log
-i删除前逐一确认(交互式)rm -i *.tmp → 安全操作
-I删除超过 3 个文件或递归删除时,仅提示一次rm -I *.log → 平衡安全与效率
-r-R--recursive递归删除目录及其内容(删除目录必备rm -r old_project/
-v--verbose显示详细删除过程rm -v *.bak
--preserve-root不递归删除 /(根目录),默认启用rm -r / → 被阻止(安全机制)
--no-preserve-root禁用根目录保护(极度危险!)rm -r --no-preserve-root / → ❌ 切勿执行!

9.ln_文件链接

ln [选项] 源文件 连接名
ln -s [选项] 源文件/目录 连接名 .
参数含义使用示例
无参数创建硬链接(hard link)ln file.txt hard_link
-s--symbolic创建符号链接(symlink / 软链接)ln -s /var/log/app.log link.log
-f--force强制删除已存在的目标链接ln -sf new_target link
-i--interactive覆盖前提示确认ln -si old_file link → 问是否替换
-v--verbose显示详细操作过程ln -sv source.txt link.txt
-n--no-dereference如果目标是软链接,不跟随它(直接操作链接本身)ln -sn existing_symlink new_link

10.chmod_赋权

chmod [选项] 模式 文件或目录

chmod 用于改变文件或目录的读(r)、写(w)、执行(x)权限

类别内容说明/示例
基本语法chmod [选项] 模式 文件/目录修改文件或目录的访问权限
三类用户u所有者(user)
g所属组(group)
o其他用户(others)
a所有人(all = ugo)
三种权限r (Read)读:查看文件 / 列目录(数值:4)
w (Write)写:修改文件 / 增删目录文件(数值:2)
x (Execute)执行:运行文件 / 进入目录(数值:1)
-无权限(数值:0)
符号模式 (字母表示)+增加权限 → chmod u+x file.sh
-移除权限 → chmod go-w config.txt
=精确设置 → chmod a=r file.txt
数字模式 (八进制)权限组合数值对应: r=4, w=2, x=1, -=0
示例755 = rwxr-xr-x644 = rw-r--r--700 = rwx------600 = rw-------
常用权限普通文件644(所有者可读写,其他只读)
可执行脚本755(所有者可读写执行,其他可读执行)
私有文件600700(仅所有者访问)
目录通常设为 755(可进入和浏览)
常用选项-R递归修改子目录和文件 → chmod -R 755 dir/
-v显示详细过程 → chmod -v 644 *.log
--reference=文件参考另一文件权限 → chmod --reference=a.txt b.txt
典型示例使脚本可执行chmod +x script.shchmod 755 script.sh
禁止他人访问chmod 600 secret.txt
递归设权限chmod -R 755 /var/www/html/
增加执行权chmod u+x,g+x file.sh
移除写权限chmod o-w file.conf
安全建议❌ 避免 777chmod 777 file 存在严重安全风险!
⚠️ 目录权限x 权限则无法 cd 进入
敏感文件.ssh, 密钥等应设为 600

11.chown_修改属主属组

类别内容说明 / 示例
基本语法chown [选项] 所有者[:组] 文件/目录修改文件的拥有者和/或所属组
主要功能更改所有者chown alice file.txt
更改所属组chown :developers file.txtchown .developers file.txt
同时更改所有者和组chown alice:developers file.txt
常用选项-R递归修改目录及子内容 → chown -R bob:data /data/
-v显示详细操作过程 → chown -v alice file.txt
-c仅当更改时显示信息
--reference=文件参考另一文件的所有者和组 → chown --reference=a.txt b.txt
用户表示用户名alice, bob, www-data
UID数字用户 ID(如 1001)→ chown 1001 file
组表示组名staff, developers, sudo
GID数字组 ID(如 1002)→ chown :1002 file
典型示例仅改所有者chown tom document.pdf
仅改所属组chown :admins config.conf
同时改所有者和组chown nginx:www-data index.html
递归修改整个目录chown -R www-data:www-data /var/www/html/
显示操作详情chown -vR user:group /backup/
使用参考文件chown --reference=good.log error.log
注意事项⚠️ 需要权限普通用户不能随意更改文件所有者;只有 root 或文件所有者可更改所有者
组变更普通用户只能将文件组改为自己所属的组
目录与文件chown 对目录本身有效,加 -R 才影响其内容。
. vs :旧系统用 . 分隔(user.group),现代系统推荐 :user:group),两者通常都支持。

12.rz/sz_文件上传下载

#rz 上传 sz 下载 
#没啥用 超过4G就玩完 老实用xftp

13.crul

类别参数/选项说明示例
基本语法curl [选项] URL从 URL 获取数据或向其传输数据curl https://example.com
输出控制-O保存文件,使用远程文件名curl -O https://site.com/file.zip
-o <文件名>保存为指定名称curl -o data.json https://api/data
-s静默模式(不显示进度条和错误)curl -s https://health
-S-s 配合,出错时仍显示错误信息curl -sS https://api
-v显示详细请求/响应信息(调试用)curl -v https://api.com
-I仅获取响应头(HEAD 请求)curl -I https://example.com
-X <METHOD>指定请求方法(GET, POST, PUT, DELETE 等)curl -X POST https://api/login
数据提交-d "key=value"发送表单数据(POST,Content-Type: application/x-www-form-urlencoded)curl -d "name=Bob&age=30" https://api/user
--data-binary @file.json发送原始数据(如 JSON 文件)curl -d @payload.json https://api/webhook
-H "Header: Value"添加自定义请求头curl -H "Content-Type: application/json" -H "Authorization: Bearer token" https://api/data
-F "key=value"发送表单数据(multipart/form-data,用于上传文件)curl -F "file=@report.pdf" https://upload.com
认证方式-u user:passHTTP Basic 认证curl -u admin:12345 https://private.com
--digest -u user:passDigest 认证curl --digest -u user:pass https://digest.com
-H "Authorization: Bearer token"Token 认证(常用)curl -H "Authorization: Bearer xyz" https://api/user
SSL/TLS--insecure-k忽略 SSL 证书错误(测试用,⚠️ 不安全)curl -k https://self-signed.com
--cert cert.pem指定客户端证书(双向 TLS)curl --cert client.crt https://secure.com
代理设置-x http://proxy:port使用 HTTP 代理curl -x http://10.0.0.1:8080 https://example.com
--socks5 127.0.0.1:1080使用 SOCKS5 代理curl --socks5 127.0.0.1:1080 https://google.com
重定向-L跟随重定向(Location 头)curl -L http://example.com → 跳转到 HTTPS
-f静默失败(服务器错误时不输出)curl -f https://api
其他常用-A "User-Agent"自定义 User-Agentcurl -A "Mozilla/5.0" https://site.com
-c cookie.txt保存 Cookie 到文件curl -c cookies.txt https://login.com
-b cookie.txt发送 Cookie(从文件)curl -b cookies.txt https://private.com
--compressed支持压缩响应(gzip, deflate)curl --compressed https://large.com

14.wget

类别参数/选项说明示例
基本语法wget [选项] URL从网络下载文件wget https://example.com/file.zip
输出控制-O <文件名>下载并保存为指定名称(覆盖)wget -O data.txt https://api/data
-o logfile.txt将日志输出到文件(非下载内容)wget -o download.log https://file.com
-q静默模式(不输出信息)wget -q https://img.jpg
-v显示详细信息(默认)wget -v http://site.com/file
文件保存-O覆盖保存为指定文件(⚠️ 仅用于单文件)wget -O index.html https://example.com
-O -输出到标准输出(可用于管道)`wget -O - https://data.json
断点续传-c断点续传(恢复未完成的下载)wget -c https://large.iso
递归下载-r递归下载(有限深度)wget -r http://site.com/docs/
-l depth设置递归最大深度wget -r -l 2 http://site.com/
-p下载页面所需资源(如图片、CSS)wget -r -p http://site.com/page.html
-k将下载的链接转换为本地可访问格式wget -r -k http://site.com/(配合 -p
-np不向上递归(不下载父目录)wget -r -np http://site.com/sub/
-nd不创建目录结构,所有文件保存在当前目录wget -r -nd http://site.com/files/
后台与重试-b后台运行下载wget -b https://bigfile.zip
-t N设置重试次数(0 表示无限)wget -t 3 https://unstable.com/file
--timeout=秒设置超时时间wget --timeout=30 https://slow.com
身份认证--user=用户名 --password=密码FTP/HTTP Basic 认证wget --user=dev --password=123 ftp://files.com/data.tar
--http-user= --http-password=专门用于 HTTP 认证wget --http-user=admin --http-password=pass https://secure.com
代理设置--proxy=on/off启用/禁用代理wget --proxy=off https://direct.com
--proxy-user= --proxy-password=代理认证wget --proxy-user=puser --proxy-password=ppass http://site.com
其他常用-U "User-Agent"自定义 User-Agentwget -U "Mozilla/5.0" https://site.com
--spider检查链接是否存在(不下载)wget --spider http://site.com/file.zip → 返回状态码
--no-check-certificate忽略 SSL 证书错误(⚠️ 不安全)wget --no-check-certificate https://self-signed.com
-c断点续传(继续未完成的下载)wget -c https://ubuntu.iso

15.ps

类别参数/选项说明示例
基本语法ps [选项]显示当前终端或系统进程ps
常用风格ps auxBSD 风格:显示所有进程(最常用)ps aux
ps -efSystem V 风格:显示完整信息ps -ef
ps -efH以树形结构显示进程层次ps -efH
ps auxfBSD 风格 + 树形显示ps auxf
核心选项a显示所有用户的进程(关联终端)ps a
u显示详细信息(用户、CPU、内存等)ps u
x显示无控制终端的进程(如守护进程)ps x
-e显示所有进程(相当于 Aps -e
-f显示完整格式(UID, PID, PPID, CMD 等)ps -f
-l显示长格式(含优先级、状态等)ps -l
-C <命令名>按命令名过滤进程ps -C nginx
--ppid <PID>显示指定父进程 ID 的子进程ps --ppid 1234
-p <PID>显示指定 PID 的进程ps -p 1234
-q <PID>快速查询多个 PID(不排序)ps -q 1234,5678

16.top

类别操作 / 选项说明示例
基本启动top启动 top,实时显示进程top
top -d N设置刷新间隔(秒)top -d 2(每 2 秒刷新)
top -p PID监控指定 PID 的进程top -p 1234
top -u 用户名只显示某用户的进程top -u alice
top -b -n 3批处理模式,运行 3 次后退出(适合脚本)top -b -n 3 > top.log
top 内部交互式命令(运行时按键)
按键功能说明
q退出 top
h显示帮助查看所有快捷键
k终止进程(kill)输入 PID 和信号(默认 15)
r重新设置进程的 nice 值输入 PID 和 nice 值(-20 ~ 19)
u只显示某用户的进程输入用户名,再次按 u 取消
P按 CPU 使用率排序(默认)
M按内存使用率排序
T按累计 CPU 时间排序
N按 PID 排序
c切换显示完整的命令行查看进程启动参数
l切换显示系统负载行
m切换显示内存信息行
1切换显示各 CPU 核心使用率多核系统非常有用
ds修改刷新间隔输入秒数(如 0.5)
Z设置显示颜色
R反向排序

17.kill

类别参数/用法说明示例
基本语法kill [信号] PID向指定进程发送信号kill 1234
kill [信号] 进程名需配合 pkillkillallpkill nginx
常用信号-9-KILL强制终止(进程无法捕获或忽略)⚠️kill -9 1234
-15-TERM正常终止(默认信号,进程可捕获并清理)✅kill -15 1234kill 1234
-1-HUP挂起/重启(常用于服务配置重载)kill -1 5678(如 nginx -s reload
-18-CONT继续被暂停的进程kill -18 1234
-19-STOP暂停进程(不可被忽略)kill -19 1234
信号表示法-9数字形式(推荐)kill -9 PID
-KILL信号名称(大写)kill -KILL PID
-SIGKILL完整信号名kill -SIGKILL PID
批量操作命令pkill <进程名>按进程名发送信号(支持通配)pkill chrome
killall <进程名>pkill,更严格匹配killall nginx
pgrep <进程名>查找进程 PID(不终止)pgrep sshd
常用选项-l列出所有信号名称kill -l
-s <信号>指定信号(较少用)kill -s TERM 1234

18.pkill

类别参数/选项说明示例
基本语法pkill [选项] 模式向匹配名称的进程发送信号pkill firefox
核心功能按进程名终止支持模糊匹配、正则pkill chrome
按用户终止-u 用户名pkill -u alice
按终端终止-t 终端名pkill -t pts/0
按父进程终止-P PPIDpkill -P 1234
常用信号-9-KILL强制终止(最后手段)⚠️pkill -9 java
-15-TERM正常终止(默认)✅pkill -15 nginx
-1-HUP重启/重载配置pkill -1 nginx(重载配置)
-STOP / -CONT暂停 / 恢复进程pkill -STOP firefox
匹配选项-x精确匹配进程名(全名)pkill -x bash(只杀 bash,不杀 sshd 中的 bash)
-f匹配完整命令行(含参数)pkill -f "python server.py"
-i忽略大小写pkill -i notepad → 匹配 Notepad
-n只匹配最新(最新启动)的进程pkill -n sshd
-o只匹配最旧(最早启动)的进程pkill -o python
输出控制-l列出所有支持的信号pkill -l
-v反向匹配(杀不匹配的进程)pkill -v -u root(杀非 root 用户的进程)
-c显示匹配并发送信号的进程数量pkill -c sshd

19.file

类别参数/选项说明示例
基本语法file [选项] 文件...判断文件类型file document.txt
核心功能识别文件真实类型不依赖扩展名,通过“魔数”(magic number)判断file image.jpg
批量检测多个文件支持多个文件或通配符file *.pdf
检测目录内容-r 递归检测file -r /data/
常用选项-b简略模式:不显示文件名,只输出类型(适合脚本)file -b script.shBourne-Again shell script
-z检测压缩文件内部类型file -z archive.tar.gz
-L跟随符号链接(检测目标文件)file -L symlink
-r递归处理目录中的文件file -r ./docs/
-f <文件>从文件中读取文件名列表进行检测file -f filelist.txt
--mime输出 MIME 类型(如 text/plainfile --mime document.pdf
--mime-type仅输出 MIME 类型主干file --mime-type *.jpgimage/jpeg
-k继续测试,显示所有可能的类型(调试用)file -k unknown.bin

20.tar

类别参数说明示例
基本语法tar [选项] 归档文件 [文件/目录]...打包或解包文件tar -cf archive.tar file1 file2
核心操作模式 (只能选一个)-c创建新的归档文件tar -c -f data.tar *.txt
-x解包(提取)归档文件tar -x -f data.tar
-t列出归档内容(不提取)tar -t -f backup.tar
-r追加文件到归档末尾tar -r -f data.tar newfile.txt
-u更新:仅追加比归档中更新的文件tar -u -f data.tar updated.txt
压缩选项-z使用 gzip 压缩/解压(.tar.gz.tgztar -czf data.tar.gz dir/
-j使用 bzip2 压缩/解压(.tar.bz2)⚠️ 已不推荐tar -cjf data.tar.bz2 dir/
-J使用 xz 压缩/解压(.tar.xz,压缩率高)tar -cJf data.tar.xz dir/
--zstd使用 Zstandard.tar.zst,现代高效)tar --zstd -cf data.tar.zst dir/
常用选项-f <文件名>指定归档文件名(必须tar -cf backup.tar /data
-v显示详细过程(verbose)tar -cvf backup.tar dir/
-C <目录>解压到指定目录tar -xvf data.tar -C /target/
--exclude=<模式>打包时排除文件tar --exclude='*.log' -cf app.tar app/
--wildcards支持通配符排除tar --exclude='*.tmp' --wildcards -cf data.tar *.txt

21.zip/unzip

类别命令说明示例
基本语法zip [选项] 压缩包.zip 文件...创建 ZIP 压缩包zip archive.zip file1.txt
unzip [选项] 压缩包.zip解压 ZIP 文件unzip archive.zip
zip 核心选项-r递归压缩目录(必须)zip -r site.zip /var/www/
-x "模式"排除文件(支持通配符)zip -r app.zip app/ -x "*.log" "*.tmp"
-9最大压缩比zip -r9 data.zip data/
-0仅打包,不压缩zip -r0 archive.zip dir/
-u更新:仅添加新或修改的文件zip -u archive.zip updated.txt
-m压缩后删除原文件(慎用)zip -m logs.zip *.log
-e启用密码加密(弱加密)⚠️zip -er secure.zip conf/
-q静默模式zip -rq backup.zip data/
unzip 核心选项-l列出压缩包内容(不解压)unzip -l archive.zip
-v显示详细信息(含压缩率)unzip -v archive.zip
-d <目录>解压到指定目录unzip archive.zip -d /restore/
-o覆盖已存在文件,不提示unzip -o archive.zip
-n不覆盖已存在文件unzip -n archive.zip
-j解压时不保留目录结构(扁平化)unzip -j archive.zip
-P 密码使用密码解密(配合 zip -eunzip -P mypass secure.zip
-t测试压缩包完整性unzip -t archive.zip

22.useradd/userdel usermod/groups

命令选项说明示例
useradd (创建用户)-m创建用户主目录 /home/用户名useradd -m alice
-d /路径指定主目录路径(常与 -m 配合)useradd -m -d /data/alice alice
-s /bin/bash指定登录 Shelluseradd -m -s /bin/zsh bob
-c "描述"添加用户描述信息useradd -m -c "Web Developer" charlie
-u UID指定用户 ID(避免冲突)useradd -m -u 2001 david
-g 组名指定主组(必须已存在)useradd -m -g developers alice
-G 组1,组2指定附加组(可多组)useradd -m -G sudo,docker alice
-r创建系统用户(无家目录,UID < 1000)useradd -r nginx
推荐创建命令useradd -m -s /bin/bash -G sudo alice
usermod (修改用户)-l 新名修改用户名usermod -l alice_new alice
-d /新路径修改主目录路径usermod -d /home/newdir alice
-m-d 配合,移动旧主目录内容usermod -d /home/newdir -m alice
-s /新shell修改登录 Shellusermod -s /bin/fish alice
-g 组名修改主组usermod -g sales bob
-aG 组1,组2追加附加组(✅ 安全,保留原有组)usermod -aG docker alice
-G 组1,组2重新设置附加组(⚠️ 覆盖原有组)usermod -G sudo alice
-c "新描述"修改用户描述usermod -c "Senior Dev" alice
-L锁定用户(禁止登录)usermod -L tempuser
-U解锁用户usermod -U tempuser
-e YYYY-MM-DD设置账户过期时间usermod -e 2025-12-31 contractor
userdel (删除用户)(无)仅删除用户,保留主目录userdel alice
-r删除用户 + 主目录 + 邮件(推荐)userdel -r alice
-f强制删除(即使用户登录中)⚠️userdel -f bob
groups (查看组)(无参数)查看当前用户所属组groups
用户名查看指定用户所属组groups alice
`groupsgrep 组`检查用户是否在某组

23.passwd

类别选项/用法说明示例
基本语法passwd [用户名]修改密码passwd(当前用户) passwd alice(root 修改他人)
核心功能无参数修改当前用户的密码passwd
指定用户名root 用户修改其他用户密码passwd bob
常用选项-l锁定账户(禁止登录) (密码前加 !!!passwd -l alice
-u解锁账户passwd -u alice
-d删除密码(设为空密码)⚠️ 不安全passwd -d guest
-S显示密码状态(状态、最近修改时间)passwd -S alice
-n 天数设置密码最短使用天数passwd -n 7 alice
-x 天数设置密码最长使用天数(过期)passwd -x 90 alice
-w 天数密码过期前警告天数passwd -w 7 alice
-e强制密码过期(下次登录必须改)passwd -e newuser

24.time

类别内容说明
命令类型time(Shell 内建)Bash/Zsh 内置,简单测量时间
/usr/bin/time(GNU time)外部命令,功能强大,支持详细资源统计
基本语法time [命令]使用 shell 内建
/usr/bin/time [选项] [命令]使用 GNU time(需安装 time 包)
常用选项 (GNU time)-v显示详细资源使用统计(推荐)
-f "格式"自定义输出格式(支持 %E, %M 等)
-o 文件输出到文件(覆盖)
-a-o 配合,追加到文件
核心输出字段real真实时间:从开始到结束的总耗时(含等待、调度)
user用户态 CPU 时间:CPU 在用户代码中执行的时间
sys内核态 CPU 时间:CPU 在系统调用中执行的时间
Percent of CPUCPU 占用率 = (user + sys) / real
Maximum resident set size内存峰值使用量(KB)⚠️ 关键指标
Exit status命令退出状态(0 表示成功)
常用格式化符号-f 选项)%Ereal 时间(格式:[h:]m:ss)
%Uuser 时间(秒)
%Ssys 时间(秒)
%M内存峰值(最大驻留集大小,KB)
%PCPU 占用率(百分比)
%C执行的命令
%x退出状态
高频使用示例time sleep 5测量简单命令耗时
/usr/bin/time -v ./script.sh详细统计脚本资源使用
/usr/bin/time -f "耗时: %E, 内存: %M KB" command自定义输出格式
/usr/bin/time -o log.txt -v command记录到日志文件
/usr/bin/time -a -o log.txt command追加记录到日志

25.free

类别选项说明示例
基本语法free [选项]显示系统内存使用情况free
常用选项-h人类可读格式(自动使用 K, M, G)✅ 推荐free -h
-mMB 为单位显示free -m
-gGB 为单位显示free -g
-kKB 为单位显示(默认)free -k
-b字节 为单位显示free -b
-s 秒数每隔指定秒数刷新显示free -h -s 2
-c 次数刷新指定次数后退出(配合 -sfree -h -s 1 -c 5
-t显示 总和free -h -t
-w分离 高速缓存(buffers/cache)列(旧版)free -w

26.crontab

类别命令/语法说明示例
基本语法crontab [选项]管理用户的定时任务crontab -e
核心操作crontab -e编辑当前用户的 cron 任务 ✅ 最常用crontab -e
crontab -l列出当前用户的 cron 任务crontab -l
crontab -r删除所有 cron 任务 ⚠️ 危险!crontab -r
crontab -i删除时提示确认(与 -r 配合)crontab -ri
crontab 文件从指定文件加载 cron 任务crontab backup.cron
时间格式 (5 个字段)* * * * * command按顺序:分 时 日 月 周0 2 * * * /backup.sh
0–5930 → 每小时第 30 分
0–232 → 凌晨 2 点
1–3115 → 每月 15 日
1–12 或 JAN-DEC6JUN → 6 月
0–7(0 和 7 = 周日)或 SUN-SAT1MON → 周一
通配符*任意值* → 每分钟
,指定多个值0,30 → 第 0 和 30 分
-范围9-17 → 9 到 17 点
*/n每 n 个单位*/5 → 每 5 分钟
常用时间示例0 2 * * *每天 凌晨 2 点备份任务
0 0 1 * *每月 1 号 0 点月度报告
0 0 * * 0每周 周日 0 点每周清理
*/5 * * * *每 5 分钟心跳检测
0 9-18 * * 1-5工作日 9–18 点整点工作时段监控
0 0 1 1 *每年 1 月 1 日 0 点年度任务
环境与路径显式路径cron 环境变量有限,推荐使用绝对路径/usr/bin/python /script.py
环境变量可在文件顶部设置PATH=/usr/local/bin:/usr/bin:/bin
输出重定向避免邮件通知command > /dev/null 2>&1
记录日志建议将输出写入日志command >> /var/log/cron.log 2>&1

27.init

类别命令/参数说明等效 systemctl 命令(systemd 系统)
基本语法`init [0-6Ss
运行级别 (Runlevel)0关机(Shutdown)systemctl poweroff
1单用户模式(Single User Mode) 无网络,root 权限,用于维护systemctl rescue
2多用户模式,无网络(Debian/Ubuntu) 有网络(RHEL/CentOS)
3多用户模式,有网络,命令行界面(CLI) 标准服务器模式systemctl isolate multi-user.target
4未使用(用户自定义)
5多用户模式,有图形界面(GUI)systemctl isolate graphical.target
6重启系统(Reboot)systemctl reboot
Ss单用户模式(与 1 类似)
其他命令init qinit Q重新读取 /etc/inittab 文件 (不重启服务)systemctl daemon-reload
telinitinit 的软链接,功能相同
查看当前运行级别who -r显示当前运行级别systemctl get-default
runlevel显示上一个和当前运行级别 (如 N 3 表示之前无,当前是 3)systemctl list-units --type=target

28.uname

类别选项说明示例输出
基本语法uname [选项]显示系统信息uname -a
核心选项-s显示操作系统内核名称(默认)Linux
-n显示主机名(hostname)server01
-r显示内核版本号5.4.0-42-generic
-v显示内核版本构建信息(编译时间等)#46-Ubuntu SMP Fri Jul 10 ...
-m显示机器硬件架构x86_64, aarch64, i686
-p显示处理器类型(部分系统不支持)x86_64unknown
-i显示硬件平台(部分系统不支持)x86_64unknown
-o显示操作系统名称GNU/Linux
-a显示所有信息(相当于 -snrvmpio)✅ 推荐Linux server01 5.4.0-42-generic #46-Ubuntu SMP ... x86_64 x86_64 GNU/Linux

29.arch

#查看集群架构
arch

30.hostname

类别选项/用法说明示例
基本功能hostname显示当前主机名hostnameserver01
hostname 新名称临时修改主机名(重启失效)sudo hostname web-server
常用选项-s显示短主机名(第一个 . 之前)hostname -sserver01(原 server01.example.com
-d显示域名部分hostname -dexample.com
-f显示完全限定域名(FQDN)hostname -fserver01.example.com
-i显示主机的主 IP 地址hostname -i192.168.1.10
-I显示所有 IP 地址(IPv4/IPv6)✅ 推荐hostname -I192.168.1.10 2001:db8::1
--help显示帮助hostname --help
--version显示版本hostname --version
权限要求查看任意用户
修改rootsudosudo hostname new-name
永久修改❌ 不支持需使用 hostnamectl(现代系统)或手动修改 /etc/hostnamesudo hostnamectl set-hostname new-name
输出示例hostnameweb01.prod.example.com完整主机名
hostname -sweb01短主机名
hostname -I192.168.1.10 10.0.0.5所有 IP 地址
典型用途脚本中获取主机名HOST=$(hostname -s)
获取服务器 IPIP=$(hostname -I)
检查 FQDN 解析hostname -f应正确输出完整域名
日志记录echo "[$(date)] $(hostname): Service started"
注意事项- hostname -f 依赖 /etc/hosts 或 DNS 能正确解析主机名 - hostname -I 不依赖 DNS,更可靠 - 临时修改重启后失效 - 在容器中显示的是宿主机的主机名和 IP

31.who/w

类别命令 / 选项说明示例
基本功能who显示当前登录的用户信息(简洁)who
w显示当前登录用户 + 系统运行状态(详细)✅w
who 输出字段用户名登录用户的名称alice
终端(TTY)用户连接的终端设备pts/0, tty1
登录时间用户登录的日期和时间Nov 3 14:20
空闲时间终端自上次活动以来的空闲时长0.00s, 10:30
进程 ID (PID)用户登录 shell 的进程 ID1234
来源/主机用户的登录来源(IP 或主机名)(192.168.1.100), :0(本地图形)
登录状态login, gone(已断开)login
w 输出结构第一行:系统摘要
up系统已运行时间up 2 days, 5:30
users当前登录用户总数users 3
load average系统平均负载(1, 5, 15 分钟)load average: 0.15, 0.10, 0.05
第二行:标题行USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
后续行:用户详情每个登录用户的详细信息
USER用户名bob
TTY终端pts/1
FROM来源主机/IP10.0.0.5
LOGIN@登录时间13:45
IDLE空闲时间2:15

32.uptime

类别选项说明示例输出
基本功能uptime显示系统运行时间、当前时间、登录用户数和系统负载 10:15:30 up 2 days, 5:30, 3 users, load average: 0.15, 0.10, 0.05
常用选项-p--pretty易读格式显示运行时间up 2 days, 5 hours, 30 minutes
-s--since显示系统启动的具体时间2025-10-29 04:45:30
-h显示帮助信息uptime -h
-V显示版本信息uptime -V
输出字段详解当前时间命令执行时的系统时间10:15:30
up X time系统已连续运行的时间up 2 days, 5:30
users当前登录的用户数量3 users
load average系统平均负载(1分钟、5分钟、15分钟)0.15, 0.10, 0.05
负载解读load < CPU核心数系统空闲,性能良好如 4 核 CPU,load=2.0 → 良好
load ≈ CPU核心数系统负载适中
load > CPU核心数系统过载,可能存在性能瓶颈如 4 核 CPU,load=6.0 → 过载
load >> CPU核心数严重过载,需排查如 load=20.0 → 紧急

33.env

类别语法 / 选项说明示例
基本功能env显示当前所有环境变量(每行一个)env → 输出 PATH=..., HOME=...
env [命令]默认环境下运行指定命令env ls -l
env 变量=值 [命令]设置或临时添加环境变量后运行命令env LANG=C date
env -i [命令]完全清空环境变量,仅用指定变量运行命令env -i PATH=/usr/bin ls
常用选项-i--ignore-environment忽略所有继承的环境变量(创建干净环境)env -i bash(启动无环境的 shell)
-u--unset=NAME从环境中移除指定变量env -u TEMP_VAR my_script.sh
-C--chdir=DIR先切换到指定目录,再执行命令env -C /tmp pwd
--help显示帮助信息env --help
--version显示版本信息env --version
输出示例env<br>PWD=/home/user<br>HOME=/home/user<br>PATH=/usr/local/bin:/usr/bin<br>SHELL=/bin/bash<br>显示键值对格式的环境变量
典型用途查看所有环境变量env替代 printenv
临时设置变量运行命令env DEBUG=1 ./app不影响当前 shell 环境
强制使用特定语言环境env LANG=C grep pattern file避免乱码或 locale 相关问题
清理环境运行脚本env -i PATH=/bin:/usr/bin sh script.sh排除环境干扰,提高可移植性
跨平台兼容性测试env -i LC_ALL=C command模拟最小化环境
调试脚本依赖env -u PROXY curl example.com测试无代理时的行为

34.lsusb -tv

类别内容说明
命令功能lsusb -tv树状结构(tree view)显示系统中所有 USB 总线和连接的设备,包含详细层级关系
基本语法lsusb -tv需要 usbutils 软件包(绝大多数 Linux 发行版默认安装)
权限要求通常无需 root普通用户可执行,但部分设备信息可能受限
核心选项-t以树状格式显示 USB 设备层级(Bus → Device → Interface → Endpoint)
-v显示详细信息(冗长模式),包括描述符、类、厂商 ID、产品 ID 等
-t + -v组合使用,提供最完整的 USB 拓扑与设备信息
输出结构Bus 00X表示 USB 总线编号(如 Bus 002
Dev 00Y表示该总线上的设备编号(如 Dev 003
`__ Port Z`
`__ Device SSSS:PPPP`
`__ Interface`
`__ Endpoint`
`__ Configuration`
关键字段idVendor厂商 ID(可查 USB ID 数据库)
idProduct产品 ID
bcdUSBUSB 协议版本(如 2.00, 3.00)
bDeviceClass设备大类(如 09=Hub, 08=Storage, 03=HID)
iManufacturer厂商名称
iProduct产品名称
iSerial序列号(如有)
bConfigurationValue当前激活的配置
bmAttributes配置属性(如自供电、远程唤醒)
MaxPower最大功耗(单位:mA)

35.lspci -tv

类别选项说明示例
基本功能lspci列出所有 PCI 总线及连接的设备(如显卡、网卡、声卡、SATA 控制器等)lspci
常用选项-v显示详细信息(包括 I/O 端口、内存地址、中断等)lspci -v
-vv更详细信息(包含子系统 ID、驱动状态等)lspci -vv
-vvv最详细信息(调试用)lspci -vvv
-k显示设备使用的内核驱动程序lspci -k
`-kgrep -A 2 "VGANetwork"`
-s <设备号>指定特定设备查看lspci -s 00:1f.6
-t树状结构显示设备层级关系lspci -t
-n显示厂商和设备 ID(十六进制),而非名称lspci -n
-nn同时显示名称和 ID(推荐)lspci -nn
-m机器可读格式(适合脚本解析)lspci -m
-d [vendor]:[device]过滤指定厂商或设备lspci -d 8086: (Intel 所有设备)
输出字段设备号格式:总线:设备.功能(如 00:1f.600:1f.6
设备类型VGA compatible controller, Ethernet controllerVGA controller
厂商:设备 ID十六进制,可用于查数据库8086:15b7(Intel 网卡)
驱动(Driver)通过 -k 显示,如 e1000e, i915Kernel driver in use: i915
典型用途查看所有 PCI 设备lspci快速概览
查看显卡信息`lspcigrep -i vga`
查看网卡信息`lspcigrep -i ethernet`
查看声卡信息`lspcigrep -i audio`
查看设备使用哪个驱动`lspci -kgrep -A 3 “VGA”`
结合 ID 查询设备型号`lspci -nngrep "VGA"→ 得到10de:1c81` → 查 PCI ID 数据库
调试硬件未识别问题lspci -vv检查是否列出但无驱动

36.lsmod

类别内容说明
命令功能lsmod列出当前内核中已加载的模块(驱动程序、文件系统、功能扩展等)
基本语法lsmod无需参数,直接执行
权限要求普通用户可执行仅查看,无需 root 权限
输出格式三列制表符分隔类似 ls -l 的表格格式
输出字段Module模块名称(如 usb_storage, nvidia, ext4
Size模块占用的内存大小(单位:字节)
Used by使用该模块的其他模块数量进程/模块名0 = 未被使用,可卸载 - = 无人使用 ext4 = 被 ext4 文件系统使用 1 = 被一个模块使用
等效命令cat /proc/modules输出格式略有不同,但内容一致
常用组合`lsmodgrep 模块名`
`lsmodhead -10`
`lsmodsort -k2 -nr`
`lsmodwc -l`

37.lsblk

类别选项说明示例
基本功能lsblk列出所有块设备(如硬盘、分区、LVM、RAID、CD-ROM、swap)及其层级关系lsblk
默认输出树状结构显示设备之间的父子关系(如 /dev/sda/dev/sda1, /dev/sda2自动缩进表示层级
常用选项-f--fs显示文件系统信息(TYPE, LABEL, UUID, MOUNTPOINT)lsblk -f ✅ 推荐
-l--list列表格式显示(非树状),便于脚本处理lsblk -l
-a显示所有设备(包括未挂载和空设备)lsblk -a
-m显示设备的权限、所有者、组信息lsblk -m
-n不显示列标题(no headers)lsblk -n
-o自定义输出列(可组合)lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
-d仅显示磁盘设备(不显示分区)lsblk -d
-e <type>排除指定类型设备(如 -e 7 排除 loop 设备)lsblk -e 7
--bytes字节为单位显示大小(而非人类可读)lsblk --bytes
--output-all显示所有可用列(调试用)lsblk --output-all

38.lscpu

类别内容说明
命令功能lscpu显示当前系统 CPU 架构、核心数、线程、缓存、拓扑结构 等详细信息
基本语法lscpu无需参数,直接执行
权限要求普通用户可执行信息来自 /proc/cpuinfo 和 sysfs
输出格式键值对形式易读,结构清晰
常用选项-a--all显示所有 CPU(包括离线 CPU)
-e--extended以表格形式显示扩展信息(含 CPU、ONLINE、SOCKET、CORE 等)
-p--parse机器可读格式(适合脚本解析,字段用 : 分隔)
-x以十六进制显示 CPU 亲和性掩码(-e 时)
--version显示版本信息

39.date

类别选项/用法说明示例输出/命令
基本功能date显示当前系统日期和时间(本地时区)Fri Oct 31 11:30:45 CST 2025
date -udate --utc显示 UTC(协调世界时) 时间Fri Oct 31 03:30:45 UTC 2025
格式化输出+格式字符串自定义输出格式(+ 后跟格式符)date +"%Y-%m-%d %H:%M:%S"
%Y四位年份2025
%y两位年份25
%m月份(01-12)10
%B完整月份名October
%b简写月份名Oct
%d日期(01-31)31
%H小时(00-23)11
%M分钟(00-59)30
%S秒(00-60)45
%sUnix 时间戳(秒级,自 1970-01-01 00:00:00 UTC)1730345445
%F完整日期(等价于 %Y-%m-%d2025-10-31
%T时间(等价于 %H:%M:%S11:30:45
%Z时区名称CST
%z时区偏移(+HHMM)+0800
%A星期全名Friday
%a星期简写Fri
%j一年中的第几天(001-366)304
%VISO 周数(01-53)44
常用格式示例date +"%Y-%m-%d"标准日期2025-10-31
date +"%H:%M:%S"标准时间11:30:45
date +"%Y-%m-%d %H:%M:%S"常用时间戳格式2025-10-31 11:30:45
date +%s获取 Unix 时间戳1730345445
date -d @1730345445将时间戳转为可读时间Fri Oct 31 11:30:45 CST 2025
date +"%Y%m%d_%H%M%S"文件名友好格式20251031_113045
显示指定时间-d "字符串"--date="字符串"显示指定时间(不修改系统时间)date -d "next Monday"
支持关键词now, today, yesterday, tomorrow, next week, last month, +5 daysdate -d "tomorrow"
支持具体时间date -d "2025-12-25 10:00:00"
支持相对时间date -d "now + 2 hours", date -d "today - 7 days"
设置系统时间⚠️date MMDDhhmm[[CC]YY][.ss]需要 root 权限,临时修改系统时间sudo date 103111302025.45 → 设为 2025年10月31日11:30:45
date -s "字符串"使用字符串设置时间sudo date -s "2025-10-31 11:30:45"
date --set="STRING"-s
其他选项--help显示帮助date --help
--version显示版本date --version
-R--rfc-email输出 RFC 5322 格式(邮件常用)Fri, 31 Oct 2025 11:30:45 +0800

40.iostat

类别选项说明示例
基本功能iostat显示 CPU 使用率设备/分区的 I/O 统计信息iostat
iostat [设备]仅显示指定设备(如 sda, nvme0n1)的统计iostat sda
常用选项-c仅显示 CPU 统计iostat -c
-d仅显示设备 I/O 统计(不显示 CPU)iostat -d
-x显示扩展统计信息(关键性能指标)iostat -x ✅ 推荐
-mMB/s 为单位显示吞吐量(默认 KB/s)iostat -xm
-kKB/s 为单位(默认)iostat -k
-p [设备]显示指定设备及其分区的统计iostat -p sda
interval设置刷新间隔(秒)iostat 2(每 2 秒刷新)
count指定输出次数iostat 2 5(每 2 秒一次,共 5 次)
-N显示 LVM 逻辑卷 名称而非设备名iostat -xN
-t在输出中添加时间戳iostat -xt 2

41.fdisk

类别语法 / 操作说明示例
基本功能fdisk [设备]进入交互式分区编辑模式sudo fdisk /dev/sdb
fdisk -l列出所有磁盘和分区信息(只读)sudo fdisk -l ✅ 最常用
fdisk -l /dev/sda列出指定磁盘的分区sudo fdisk -l /dev/sda
权限要求rootsudo修改分区表必须超级用户权限sudo fdisk /dev/sdb
交互式命令mhelp显示帮助菜单fdisk 提示符下输入
p打印当前分区表(preview)查看现有分区
n创建新分区进入分区创建向导
d删除分区可指定分区号
t更改分区类型(如 Linux, LVM, Swap, EFI)设置分区用途
l列出所有支持的分区类型代码83=Linux, 8e=LVM, 82=Swap, ef=EFI
a切换引导标志(bootable flag)用于设置启动分区
u切换显示单位(sectors/bytes)
w写入更改并退出(关键!)分区表被永久修改
q不保存退出丢弃所有未保存的更改

42.mkfs

类别选项/用法说明示例
基本功能mkfs [选项] [设备]在指定设备(分区)上创建文件系统(即“格式化”)sudo mkfs /dev/sdb1
核心选项-t <类型>指定要创建的文件系统类型mkfs -t ext4 /dev/sdb1
-V显示详细过程(verbose)mkfs -V -t xfs /dev/sdb1
-F强制创建,即使设备看起来像已有文件系统mkfs -F -t btrfs /dev/sdb1 ⚠️
-c创建前检查坏块(耗时,但安全)mkfs -c -t ext4 /dev/sdb1
-L <标签>为文件系统设置卷标(Label)mkfs -t ext4 -L DATA /dev/sdb1
-q静默模式(quiet),减少输出mkfs -q -t xfs /dev/sdb1
常用文件系统类型ext2传统 Linux 文件系统(无日志)mkfs -t ext2 /dev/sdb1
ext3ext2 + 日志mkfs -t ext3 /dev/sdb1
ext4现代 Linux 默认,高性能mkfs -t ext4 /dev/sdb1 ✅ 推荐
xfs高性能,适合大文件和大容量mkfs -t xfs /dev/sdb1
btrfs支持快照、压缩、RAID 的现代文件系统mkfs -t btrfs /dev/sdb1
vfat兼容 Windows 的 FAT32mkfs -t vfat /dev/sdb1
ntfsWindows NTFS(需 ntfs-3gmkfs.ntfs /dev/sdb1
swap创建交换分区mkswap /dev/sdb2(专用命令)

43.mount

类别命令 / 选项说明示例
基本功能mount [设备] [挂载点]将文件系统(设备)挂载到指定目录sudo mount /dev/sdb1 /data
umount [设备] 或 [挂载点]卸载已挂载的文件系统sudo umount /dev/sdb1sudo umount /data
权限要求rootsudo挂载/卸载通常需要超级用户权限sudo mount ...
常用选项(mount)-t <类型>指定文件系统类型(如 ext4, xfs, vfatmount -t ext4 /dev/sdb1 /data
-o <选项>指定挂载选项(可组合,逗号分隔)mount -o ro,noatime /dev/sdb1 /data
-a挂载 /etc/fstab 中所有可挂载的文件系统mount -a(常用于启动时)
--bind绑定挂载(将一个目录挂载到另一个位置)mount --bind /src /dst
--make-shared高级挂载命名空间控制mount --make-shared /data
常用挂载选项 -oro只读挂载mount -o ro /dev/sdb1 /data
rw读写挂载(默认)
noatime不更新文件访问时间(提升性能)mount -o noatime /data
nodiratime不更新目录访问时间
relatime相对时间更新(平衡性能与标准)✅ 推荐
sync / async同步/异步 I/Oasync 默认
dirsync目录更新同步写入
noexec禁止执行文件安全挂载
nosuid禁止 setuid/setgid 位生效安全挂载
nodev禁止解释设备文件安全挂载
auto / noauto是否支持 mount -anoauto 用于 USB
user / nouser允许普通用户挂载user 需在 /etc/fstab 设置
defaults使用默认选项(rw, suid, dev, exec, auto, nouser, asyncmount -o defaults /dev/sdb1 /data

44.df

类别选项说明示例
基本功能df显示所有已挂载文件系统的磁盘空间使用情况df
常用选项-h人类可读格式(自动使用 K, M, G, T)✅ 推荐df -h
-H类似 -h,但使用 1000 进制(KB=10³, MB=10⁶)df -H
-kKB 为单位显示(默认)df -k
-mMB 为单位显示df -m
-T显示文件系统类型(如 ext4, xfs, tmpfs)df -T
-i显示inode 使用情况(而非磁盘空间)df -i
-a显示所有文件系统(包括 0 大小或特殊文件系统)df -a
--total在末尾添加总计行df -h --total
[目录/设备]查看指定目录所在文件系统的使用情况df /home, df /dev/sda1

45.du

类别选项说明示例
基本功能du [目录/文件]显示指定文件或目录的磁盘使用空间du /home
常用选项-h人类可读格式(K, M, G, T)✅ 推荐du -h /var/log
-H类似 -h,但使用 1000 进制du -H /data
-kKB 为单位显示(默认)du -k /tmp
-mMB 为单位显示du -m /opt
-s汇总统计(只显示总大小,不列出子目录)✅ 常用du -sh /home
--max-depth=N显示指定深度的目录大小du -h --max-depth=1 /
-a显示所有文件和目录(不仅目录)du -a /etc
-c在最后输出总计du -ch /tmp
--exclude=PATTERN排除匹配模式的文件/目录du -h --exclude="*.log" /var
-L跟随符号链接(symlink)du -L /link/to/dir
-S不包含子目录的大小(仅当前层)du -S /data
--time显示文件/目录的修改时间du -h --time /backup

46.awk

类别语法 / 选项 / 变量说明示例
基本语法awk 'pattern { action }' file核心结构:模式匹配后执行动作awk '/error/ {print}' log.txt
awk -F '分隔符' '{...}'指定输入字段分隔符(默认空格/制表符)awk -F ':' '{print $1}' /etc/passwd
awk 'BEGIN{...} {...} END{...}'BEGIN 初始化,END 最终处理统计、求和、设置变量
核心组件pattern匹配条件(正则、比较、范围等)/root/, $3 > 100, NR==1
action满足条件时执行的动作{print $0}, {sum+=$2}
常用动作print输出内容,默认换行print $1, $2
printf格式化输出(类似 C)printf "%-10s %d\n", $1, $2
流程控制if, for, while, break复杂逻辑处理
内置变量$0当前整行内容print $0
$1, $2, …第 1、2、… n 个字段print $1
NF当前行的字段数量awk '{print NF}' file
NR总行号(所有文件累计)awk '{print NR}' *.log
FNR当前文件行号(每文件从 1 开始)awk '{print FNR}' f1 f2
FS输入字段分隔符(可修改)BEGIN{FS=","}-F','
OFS输出字段分隔符(默认空格)BEGIN{OFS="-"}
FILENAME当前处理的文件名print FILENAME": "$0
常用选项-F 'sep'设置字段分隔符awk -F':' '{...}'
-v var=value在 BEGIN 前定义变量awk -v name=John '{...}'
-f script.awk从文件读取 awk 脚本awk -f myscript.awk data.txt
操作符~, !~匹配 / 不匹配正则$1 ~ /^user/
==, !=, <, >比较操作符$2 == "active"
+, -, *, /, %算术运算sum += $2
++, --自增自减count++
高频场景提取列使用 $n-Fawk -F: '{print $1,$6}' /etc/passwd
过滤行正则或条件匹配awk '$3>50' data.txt
统计行数END{print NR}awk 'END{print NR}' file
求和/平均累加变量 + ENDawk '{s+=$2} END{print s}' file
格式化输出printfawk '{printf "%5.2f\n", $1}'
多文件处理FILENAMEawk '{print FILENAME,$0}' *.log
经典示例打印第一列awk '{print $1}' file
CSV 求和第三列awk -F',' 'NR>1{sum+=$3} END{print sum}' sales.csv
显示行号awk '{print NR": "$0}' file
设置输出分隔符`awk 'BEGIN{OFS=""} {print 1,1,2}’ file`
条件输出awk '{if($2>100) print $1,"High"; else print $1,"Low"}'

47.sed

类别语法 / 选项 / 命令说明示例
基本语法sed [选项] '地址+命令' 文件核心结构:在指定行执行编辑操作sed 's/old/new/' file.txt
sed -e 'cmd1' -e 'cmd2'执行多个命令sed -e '1d' -e 's/foo/bar/' file
sed -f script.sed从文件读取 sed 脚本sed -f myscript.sed data.txt
常用选项-n静默模式(抑制默认输出)sed -n '1p' file
-e添加编辑命令(可多个)同上
-f指定脚本文件同上
-i[.bak]直接修改原文件(可选备份)✅ 危险!sed -i.bak 's/foo/bar/g' file
-r-E使用扩展正则表达式(ERE)`sed -r 's/(a
地址(定位)10第 10 行sed '10d' file
1,5第 1 到 5 行sed '1,5d' file
/pattern/匹配正则的行sed '/error/d' log.txt
1~2从第 1 行开始,每隔 2 行(奇数行)sed '1~2d' file
$最后一行sed '$d' file
核心编辑命令p打印当前行(常与 -n 配合)sed -n '1p' file
d删除当前行sed '3d' file
s/old/new/[flags]替换文本(最常用)sed 's/foo/bar/g' file
a\text在匹配行后追加文本sed '/end/a\new line' file
i\text在匹配行前插入文本sed '/start/i\header' file
c\text替换整行内容sed '2c\replaced line' file
w file将匹配行写入到另一个文件sed -n '/error/w error.log' log.txt
=打印行号sed '=' file
q立即退出 sedsed '5q' file
替换标志 [flags]g全局替换(每行所有匹配)✅s/foo/bar/g
数字替换第 n 个匹配s/foo/bar/2(替换第 2 个)
p打印替换成功的行(常与 -n 配合)sed -n 's/foo/bar/p'
i忽略大小写s/error/ERROR/gi
w file将替换后的行写入文件s/foo/bar/gw changed.txt
正则表达式.匹配任意字符sed 's/.*/X/'
^行首sed 's/^/#/'(注释整行)
$行尾sed 's/$/;/'(行尾加分号)
*前一个字符 0 次或多次sed 's/f.*o/X/'
[abc]字符集合sed 's/[aeiou]/_/g'
\{m,n\}重复 m 到 n 次(基础正则)sed 's/a\{2,4\}/X/'
$ $分组捕获sed 's/$user$.*/\1_admin/'
\1, \2引用分组同上
高频场景替换字符串s/old/new/gsed 's/Windows/Linux/g' doc.txt
删除空行/^$/dsed '/^$/d' file
删除注释行/^#/dsed '/^#/d' config.conf
在文件开头插入1i\sed '1i\# Auto-generated' file
在文件结尾追加$a\sed '$a\EOF' file
批量修改文件-i + s///gsed -i 's/old_domain/new_domain/g' *.conf
提取匹配行-n '/pattern/p'sed -n '/error/p' log.txt
备份并替换-i.baksed -i.bak 's/foo/bar/g' important.conf

48.sync/rsync

类别命令 / 选项说明示例
命令类型sync同步内存缓存到磁盘(强制刷写)sync
rsync远程/本地文件同步工具(增量备份)✅rsync -av /src/ /dst/
sync 核心功能sync将内核缓冲区中所有待写数据(文件、元数据)强制写入物理存储sync
sync; echo 3 > /proc/sys/vm/drop_caches刷写并清空页面缓存(运维常用)清理内存
rsync 基本语法rsync [选项] 源 目标支持本地、远程(SSH)、守护进程模式rsync -av /a/ /b/
rsync 常用选项-a归档模式(保留权限、时间、符号链接等)✅ 推荐rsync -a ...
-v详细输出(verbose)rsync -av ...
-r递归复制目录rsync -r ...
-l复制符号链接(软链接)本身
-L跟随符号链接(复制目标文件)rsync -aL ...
-H保留硬链接rsync -aH ...
-S高效处理稀疏文件rsync -aS ...
-z传输时压缩数据(节省带宽)rsync -az ...
-P显示进度 + 断点续传(--partial --progressrsync -avP ...
--delete删除目标中源不存在的文件(镜像同步)⚠️ 危险!rsync -av --delete src/ dst/
--exclude='PATTERN'排除匹配模式的文件/目录--exclude='*.tmp'
--include='PATTERN'包含特定文件(配合 exclude)--include='/.git'
--dry-run模拟运行,不实际执行(测试用)✅ 安全!rsync -avn --delete ...
-u--update跳过目标中更新的文件(防止覆盖)rsync -au ...
传输模式本地同步rsync [选项] 源/ 目标/rsync -av /data/ /backup/
通过 SSH 远程同步rsync [选项] user@host:源 目标rsync -av user@server:/data/ ./local/
rsync [选项] 源 user@host:目标rsync -av /data/ user@server:/backup/
守护进程模式(daemon)使用 rsync:// 协议rsync -av rsync://host/module/ /dst/
路径末尾 / 含义rsync /src /dstsrc 目录复制到 /dst/src
rsync /src/ /dstsrc内容复制到 /dst/ ✅ 推荐用于同步rsync -av /data/ /backup/
高频使用场景本地备份rsync -av /home/ /backup/home/完整备份用户数据
远程备份(SSH)rsync -azP user@server:/var/log/ ./logs/压缩传输日志
镜像同步rsync -av --delete --dry-run /src/ /dst/ → 去掉 --dry-run确保目标与源完全一致
排除临时文件rsync -av --exclude='*.tmp' --exclude='cache/' /src/ /dst/清理式同步
增量备份脚本结合 date 命名目录rsync -av /data/ /backup/data_$(date +%F)/
同步后删除源文件rsync --remove-source-files ...移动而非复制
查看同步差异rsync -avn --delete /src/ /dst/仅显示将发生的变更

49.ssh-keygen

类别选项 / 用法说明示例
基本功能生成、管理和转换 SSH 密钥对用于无密码登录、身份认证ssh-keygen
常用选项-t type指定密钥类型(rsa, dsa, ecdsa, ed25519)✅ 推荐 ed25519ssh-keygen -t ed25519
-b bits指定密钥长度(RSA 用,如 2048, 4096)ssh-keygen -t rsa -b 4096
-f filename指定密钥文件名ssh-keygen -f ~/.ssh/id_mykey
-C "comment"添加注释(通常是邮箱)ssh-keygen -C "user@company.com"
-N "passphrase"设置密码短语(空为无密码)ssh-keygen -N ""
-p修改现有密钥的密码短语ssh-keygen -p -f ~/.ssh/id_rsa
-l -f keyfile显示密钥指纹(fingerprint)ssh-keygen -l -f ~/.ssh/id_rsa
-y -f keyfile从私钥提取公钥ssh-keygen -y -f ~/.ssh/id_rsa > id_rsa.pub
高频场景生成新密钥ssh-keygen -t ed25519 -C "your_email"
无密码密钥ssh-keygen -t rsa -b 2048 -N ""自动化脚本用(注意安全)
转换 OpenSSH 到 PEMssh-keygen -p -m PEM -f key兼容旧工具
查看服务器公钥指纹ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub验证主机真实性
注意事项- 私钥 (id_rsa) 必须保密,权限应为 600 - 公钥 (id_rsa.pub) 可分发,放入 ~/.ssh/authorized_keys - ed25519RSA 更安全高效,优先使用

50.nc

类别选项 / 用法说明示例
基本功能网络瑞士军刀:读写网络连接端口扫描、文件传输、端口监听、代理nc host port
常用选项-l监听模式(server)nc -l 8080
-p port指定本地端口(客户端)nc -l -p 8080
-v详细输出nc -v google.com 80
-w sec连接超时时间nc -w 5 host port
-z扫描模式(不发送数据)nc -zv host 22-80
-u使用 UDP 协议nc -u host 53
-k监听时保持服务,处理多个连接nc -lk 8080
-e program连接建立后执行程序(危险,后门)nc -l -p 4444 -e /bin/sh ⚠️
高频场景端口连通性测试nc -zv host port检查防火墙
端口扫描nc -zv host 20-100快速扫描
文件传输接收端: nc -l 1234 > file发送端: nc host 1234 < file简单传文件
简易 Web 服务器`echo -e “HTTP/1.1 200 OK\n\nHello”nc -l 8080`
测试 UDP 服务nc -u -zv host 53DNS 连通性
注意事项- nc 无加密,敏感数据用 socatssh - -e 选项极不安全,生产环境禁用 - 某些系统为 ncat (nmap 套件) 或 netcat

51.history

类别选项 / 用法说明示例
基本功能显示、操作 shell 命令历史记录回溯、重用、搜索之前执行的命令history
常用选项(无选项)显示完整历史(带编号)history
N显示最近 N 条命令history 10
history -c清除当前会话历史history -c
history -d N删除第 N 条历史命令history -d 50
history -w将历史写入文件(~/.bash_historyhistory -w
history -r从文件重新加载历史history -r
快捷键/上下浏览历史命令
Ctrl+R增量搜索历史(reverse-i-search)✅Ctrl+R + 输入关键词
!n执行历史中第 n 条命令!50
!!重复上一条命令sudo !!
!string执行最近以 string 开头的命令!grep
!?string执行包含 string 的最近命令!?log
环境变量$HISTSIZE内存中保存的历史条数export HISTSIZE=1000
$HISTFILESIZE历史文件中保存的最大条数export HISTFILESIZE=2000
$HISTFILE历史文件路径(默认 ~/.bash_history
$HISTCONTROL控制记录(ignorespace, ignoredups, eraseexport HISTCONTROL=ignoredups
注意事项- 历史仅对当前会话有效,关闭前用 history -w 保存 - 敏感命令前加空格可避免记录(若 HISTCONTROLignorespace) - 多个终端时历史可能不完全同步

52.scp

类别选项 / 用法说明示例
基本功能安全复制文件(基于 SSH)在本地和远程主机间加密传输文件scp source target
常用选项-P port指定 SSH 端口(大写 P)scp -P 2222 file user@host:/path
-r递归复制目录scp -r /local/dir user@host:/remote/
-p保留文件修改时间、访问时间、权限scp -p file ...
-C启用压缩传输scp -C largefile ...
-i keyfile指定私钥文件scp -i ~/.ssh/id_rsa ...
-q静默模式(不显示进度)scp -q ...
-l limit限制带宽(KB/s)scp -l 800 ...
传输方向本地 → 远程scp /local/file user@host:/remote/path
远程 → 本地scp user@host:/remote/file /local/path
远程 → 远程scp user1@host1:/file user2@host2:/path通过本机中转
高频场景上传文件scp -P 2222 config.txt admin@server:/tmp/
下载文件scp user@host:~/data.tar.gz ./
同步目录scp -r -C /data/ user@backup:/backup/压缩传输
使用密钥scp -i ~/.ssh/aws-key.pem file ubuntu@ec2:/home/AWS EC2 上传
注意事项- 基于 SSH,需确保 SSH 连通和权限 - 端口是 -P(大写),不是 -p - 对于大量文件/增量同步,rsync 更高效 - 文件路径中 ~ 可能不被远程 shell 解析,建议用绝对路径

53.dd

类别选项 / 用法说明示例
基本功能转换和复制文件(位级别)创建镜像、烧录 U 盘、测速、清零dd if=源 of=目标
核心参数if=文件输入文件(input file)if=/dev/sda
of=文件输出文件(output file)of=/dev/sdb
bs=大小块大小(如 512B, 1K, 1M)✅ 影响性能bs=4M
count=N复制 N 个块count=100
skip=N输入跳过 N 个块skip=1
seek=N输出跳过 N 个块seek=1
conv=参数转换选项(notrunc, sync, fdatasyncconv=notrunc
常用组合bs=1M count=1024复制 1G 数据dd if=/dev/zero of=test bs=1M count=1024
bs=4M大块提高磁盘复制速度dd if=src.img of=/dev/sdX bs=4M
conv=notrunc不截断输出文件(用于部分写入)dd of=file conv=notrunc seek=1
status=progress显示实时进度(GNU coreutils)✅dd ... status=progress
高频场景创建空文件dd if=/dev/zero of=file bs=1M count=100100MB 文件
测磁盘写速度dd if=/dev/zero of=test bs=1G count=1 oflag=direct绕过缓存
烧录 ISO 到 U 盘dd if=system.iso of=/dev/sdX bs=4M status=progress
备份 MBRdd if=/dev/sda of=mbr.bak bs=512 count=1
恢复 MBRdd if=mbr.bak of=/dev/sda bs=512 count=1
⚠️ 注意事项dd 极其危险! 写错 of=永久覆盖数据! 操作前务必确认 of= 设备正确 使用 lsblkfdisk -l 仔细核对设备名 建议先用 dd 创建小文件测试

54.ss

类别选项 / 用法说明示例
基本功能显示套接字(socket)统计信息替代 netstat,更快更高效ss
常用选项-t显示 TCP 连接ss -t
-u显示 UDP 连接ss -u
-l显示监听状态的套接字(listening)ss -tl
-p显示进程/程序名ss -tlp
-n数字化显示(不解析服务名、主机名)ss -tn
-a显示所有状态(包括监听和非监听)ss -tln
-r解析主机名(与 -n 相反)ss -tr
-s显示套接字使用统计摘要ss -s
-e显示详细信息(如 TOS, TS)ss -te
-i显示 TCP 内部信息(拥塞控制)ss -ti
-f FAMILY指定协议族(inet, inet6, unixss -f inet
高频场景查看监听端口ss -tlnp找服务端口
查看所有 TCP 连接ss -tan分析连接数
查看特定端口`ss -tlnpgrep :80`
查看 ESTABLISHED 连接ss -t state established
查看 UDP 连接ss -ulnp
统计连接状态ss -s快速看网络概况
注意事项- ssnetstat 更快,推荐使用 - LISTEN 状态需 -l 才显示 - 查看进程需 sudo 或足够权限(否则 users:(("...",pid=xxx,fd=xxx))) - 输出字段:State, Recv-Q, Send-Q, Local Address:Port, Peer Address:Port

55.telnet

类别选项 / 用法说明示例
基本功能远程登录协议客户端 / 通用 TCP 连通性测试测试端口开放、简单通信telnet host port
常用用法telnet host连接远程登录服务(默认端口 23)telnet 192.168.1.1
telnet host port连接指定端口(HTTP, SMTP 等)✅ 测试用telnet smtp.com 25
telnet进入交互模式,使用命令telnet> open host port
交互命令open host port建立新连接telnet> open google.com 80
close关闭当前连接telnet> close
quit退出 telnettelnet> quit
set localecho本地回显(输入可见)调试用
高频场景测试 Web 服务telnet www.site.com 80GET / HTTP/1.0 → 回车手动发 HTTP
测试邮件服务telnet mail.server 25EHLO clientSMTP 诊断
测试数据库telnet db.host 3306看能否连通
测试自定义服务telnet localhost 8080开发调试
⚠️ 注意事项- telnet 传输明文(包括密码),绝不用于生产登录! - 仅用于端口连通性测试或调试协议 - 现代系统常不预装,可用 nc 替代测试 - 连接后需手动输入协议命令(如 HTTP 的 GET)并回车两次

56.ping

类别选项 / 用法说明示例
基本功能发送 ICMP ECHO 请求包,测试网络连通性检查主机是否可达、测量网络延迟和稳定性ping google.com
常用选项-c N发送 N 个数据包后自动停止 ✅ping -c 4 8.8.8.8
-i interval设置发送包的时间间隔(秒)ping -i 0.5 host(每 0.5 秒发一个)
-s size设置 ICMP 数据包的大小(字节)ping -s 1000 host(发送 1000 字节数据)
-W timeout等待每个回复的超时时间(秒)ping -W 3 host(3 秒未回应则超时)
-w deadline设置 ping 命令总的执行时间(秒)ping -w 10 host(运行 10 秒后退出)
-I interface/IP指定发送包的源网络接口或 IP 地址ping -I eth0 192.168.1.1
-t ttl设置数据包的生存时间(TTL)ping -t 64 host
-q静默模式,只显示最终统计摘要ping -qc 10 host(脚本中常用)
-n数字化输出,不解析主机名和服务名ping -n 1.1.1.1
-b允许 ping 广播地址(需特权)ping -b 192.168.1.255
-R记录路由(Record Route)ping -R host(部分系统支持)
输出字段详解PING ...命令信息:目标主机、IP、数据包大小PING google.com (142.250.180.78): 56 data bytes
64 bytes from ...收到回复:大小、来源 IP、序列号、TTL、往返时间64 bytes from 142.250.180.78: icmp_seq=1 ttl=116 time=12.3 ms
icmp_seqICMP 序列号,用于匹配请求和回复
ttlTime To Live,每经过一个路由器减 1可大致判断网络跳数
time往返延迟(Round-Trip Time, RTT),单位毫秒(ms)✅ 关键指标time=15.7 ms
--- host ping statistics ---统计摘要开始
X packets transmitted发送的数据包总数
Y packets received接收到的回复包数
Z% packet loss丢包率,衡量网络稳定性 ✅0% packet loss
min/avg/max/mdev延迟的最小值、平均值、最大值和均方差min/avg/max/mdev = 10.1/12.5/15.0/1.8 ms
高频使用场景基本连通性测试ping -c 3 8.8.8.8检查网关或 DNS 是否可达
持续监控网络ping google.com观察连接是否稳定(Ctrl+C 停止)
测试服务器响应ping -c 10 your-server.com检查延迟和丢包
脚本中判断网络if ping -qc 1 host > /dev/null; then echo "UP"; fi自动化监控
测试 MTU(路径最大传输单元)ping -s 1472 -M do host发送 1472 字节数据 + 28 字节头 = 1500 字节,-M do 禁止分片,不通则 MTU 更小
指定源地址测试ping -I 192.168.2.100 gateway多网卡环境下测试特定路径
注意事项- 防火墙可能阻止 ICMPping 不通不代表服务(如 HTTP)不可用。 - 延迟受多种因素影响:物理距离、网络拥塞、路由跳数、服务器负载。 - -c 选项至关重要:避免在终端中无限运行。 - 使用 mtrtraceroute 可进行更深入的路由诊断。 - 在 Windows 上,命令为 ping,选项略有不同(如 -n 代替 -c)。
替代/增强工具mtr结合 pingtraceroute,实时显示路径和延迟mtr google.com
fping可同时 ping 多个主机,适合脚本fping -g 192.168.1.1/24
nping (nmap)功能更强大的网络探测工具nping --tcp -p 80 host

57.iptables

类别选项 / 语法说明示例
基本功能Linux 用户空间防火墙配置工具基于 Netfilter 实现包过滤、NAT、连接跟踪iptables -A INPUT ...
核心表 (-t table)filter默认表,用于数据包过滤(INPUT, OUTPUT, FORWARD)✅-t filter
nat网络地址转换(PREROUTING/DNAT, POSTROUTING/SNAT)-t nat
mangle修改数据包头部(TTL, TOS),高级用途-t mangle
raw绕过连接跟踪(connection tracking)-t raw
核心链INPUT处理进入本机的数据包-A INPUT
OUTPUT处理本机发出的数据包-A OUTPUT
FORWARD处理转发经过本机的数据包(路由)-A FORWARD
PREROUTING路由处理(nat 表中用于 DNAT)-t nat -A PREROUTING
POSTROUTING路由处理(nat 表中用于 SNAT/Masquerade)-t nat -A POSTROUTING
管理命令-L [chain]列出规则(推荐 -n -v --line-numbers)✅iptables -L INPUT -n -v
-A chain追加规则到链末尾iptables -A INPUT -j DROP
-I chain [num]插入规则到指定位置(1为最前)iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT
-D chain num删除num 条规则iptables -D INPUT 2
-F [chain]清空指定链(慎用)⚠️iptables -F INPUT
-P chain target设置链的默认策略ACCEPT, DROP, REJECT)⚠️iptables -P INPUT DROP
-N chain / -X chain创建 / 删除自定义链iptables -N MYCHAIN
-S以命令形式输出所有规则(可重载)iptables -S > rules.txt
匹配条件 (matches)-p tcp/udp/icmp指定协议-p tcp
--dport port目标端口(需 -p tcp/udp--dport 22
--sport port源端口--sport 1024:65535
-s ip/mask源 IP 地址或网段-s 192.168.1.0/24
-d ip/mask目标 IP 地址或网段-d 10.0.0.5
-i interface输入接口(INPUT/FORWARD-i eth0
-o interface输出接口(OUTPUT/FORWARD-o eth1
-m state --state连接状态(NEW, ESTABLISHED, RELATED)✅-m state --state ESTABLISHED,RELATED
-m mac --mac-source匹配源 MAC 地址-m mac --mac-source AA:BB:CC:DD:EE:FF
目标动作 (target)-j ACCEPT接受并放行数据包-j ACCEPT
-j DROP丢弃数据包(静默)✅-j DROP
-j REJECT拒绝并返回错误-j REJECT --reject-with icmp-port-unreachable
-j SNAT --to-source ip源地址转换(静态)... -j SNAT --to-source 203.0.113.1
-j MASQUERADE源地址转换(动态,适合拨号)✅... -j MASQUERADE
-j DNAT --to-destination ip目的地址转换(端口转发)... -j DNAT --to-destination 192.168.1.100
-j LOG --log-prefix "MSG"记录日志(需配合 syslog-j LOG --log-prefix "FIREWALL: "
-j REDIRECT --to-ports重定向到本机端口(透明代理)-j REDIRECT --to-ports 8080
高频场景允许 SSHiptables -A INPUT -p tcp --dport 22 -j ACCEPT
基础防火墙策略<br>iptables -P INPUT DROP<br>iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br>iptables -A OUTPUT -j ACCEPT<br>安全默认策略
开放 Web 服务iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPT
端口转发 (DNAT)<br>echo 1 > /proc/sys/net/ipv4/ip_forward<br>iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.100:8080<br>
共享上网 (SNAT)<br>echo 1 > /proc/sys/net/ipv4/ip_forward<br>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE<br>内网共享公网IP上网
持久化保存规则iptables-save > /etc/iptables/rules.v4
恢复规则iptables-restore < /etc/iptables/rules.v4
系统服务Debian/Ubuntu: netfilter-persistent save CentOS/RHEL: service iptables save重启后生效
注意事项规则顺序决定行为,从上到下匹配。 • 修改默认策略 (-P) 前,确保已有允许 SSH 的规则,否则可能失联! • 使用 -n -v 查看规则更清晰(显示 IP 和端口)。 • -A 追加到末尾,-I 插入到开头,行为不同。 • 生产环境推荐使用 ufwfirewalld 等前端工具。 • 现代系统推荐使用 nftables 替代。
posted @ 2026-01-31 16:10  gccbuaa  阅读(1)  评论(0)    收藏  举报