Linux命令大全:从入门到精通

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
云原生网关 MSE Higress,422元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 日常使用的linux命令整理

一、文件与目录操作

1. 文件列表命令 (ls)

ls [选项] [目录名]
常用选项:
-a, --all          # 显示所有文件,包括隐藏文件(以.开头的文件)
-l                 # 使用长列表格式显示详细信息
-h, --human-readable # 以人类可读的格式显示文件大小(如1K, 234M, 2G)
-r, --reverse      # 反向排序
-t                 # 按修改时间排序(最新修改的排前面)
-S                 # 按文件大小排序
-R                 # 递归显示子目录内容
--color=auto       # 彩色显示不同类型文件(默认)
--group-directories-first # 目录优先显示

示例:

ls -lhtr /var/log  # 按时间反向排序,显示/var/log目录的详细内容
ls -la ~           # 显示家目录所有文件(包括隐藏文件)
ls -lR /etc        # 递归显示/etc目录下所有内容

2. 目录切换命令 (cd)

cd [目录路径]
特殊路径:
~       # 当前用户的家目录
~user   # 指定用户的家目录
-       # 返回上一个工作目录
..      # 上级目录
../..   # 上两级目录
环境变量:
$HOME   # 当前用户家目录
$OLDPWD # 上一个工作目录路径

示例:

cd /usr/local/bin   # 切换到绝对路径
cd ../src           # 切换到上级目录的src子目录
cd ~/Documents      # 切换到当前用户Documents目录
cd -                # 返回上一个工作目录

3. 显示当前目录 (pwd)

pwd [选项]
选项:
-P    # 显示实际物理路径(解析符号链接)
-L    # 显示逻辑路径(默认)
示例:
pwd -P  # 如果当前在符号链接目录,显示实际路径

4. 创建目录 (mkdir)

mkdir [选项] 目录名...
选项:
-p, --parents  # 创建多级目录,自动创建不存在的父目录
-m, --mode=MODE # 设置目录权限(如mkdir -m 755 dir)
-v, --verbose  # 显示创建过程信息
示例:
mkdir -pv project/{src,bin,doc}  # 创建project目录和三个子目录
mkdir -m 750 private_dir        # 创建权限为750的目录

5. 删除目录 (rmdir/rm)

# 删除空目录
rmdir [选项] 目录名...
选项:
-p, --parents  # 删除目录及其空的父目录
-v, --verbose  # 显示删除过程信息
# 删除非空目录(使用rm)
rm -r 目录名    # 递归删除目录及其内容
rm -rf 目录名   # 强制递归删除,不提示
示例:
rmdir -pv dir1/dir2  # 删除dir2,如果dir1为空也删除
rm -ri dir           # 交互式递归删除,删除前询问

6. 复制文件/目录 (cp)

cp [选项] 源文件... 目标文件
常用选项:
-a, --archive    # 归档模式,保留所有文件属性(等于-dpR)
-r, -R, --recursive # 递归复制目录
-i, --interactive # 覆盖前询问
-u, --update     # 只复制源文件中更新时间较新的文件
-v, --verbose    # 显示复制过程
-p               # 保留文件属性(模式、所有权、时间戳)
--preserve=属性列表 # 保留指定属性(mode,ownership,timestamps等)
--backup=方式    # 若需覆盖文件,进行备份(none,off,numbered,t,simple,never)
示例:
cp -a /etc /backup/etc_bak  # 完整备份/etc目录
cp -u *.txt ~/Documents/    # 只复制更新的文本文件
cp -iv source.txt dest.txt  # 交互式复制,显示详细信息

7. 移动/重命名文件 (mv)

mv [选项] 源文件... 目标文件
选项:
-i, --interactive # 覆盖前询问
-f, --force      # 强制覆盖,不询问
-n, --no-clobber # 不覆盖已存在文件
-u, --update     # 只移动更新的文件
-v, --verbose    # 显示移动过程
--backup=方式    # 覆盖前备份(同cp)
示例:
mv -i oldname newname      # 重命名文件(交互式)
mv -v *.pdf ~/Documents/   # 移动所有PDF文件并显示过程
mv --backup=numbered file.txt dir/ # 移动文件,如有冲突创建编号备份

8. 删除文件/目录 (rm)

rm [选项] 文件...
选项:
-f, --force      # 强制删除,忽略不存在的文件,不提示
-i               # 删除前逐一询问确认
-I               # 删除超过3个文件或递归删除时提示一次
-r, -R, --recursive # 递归删除目录及其内容
-d, --dir        # 删除空目录
-v, --verbose    # 显示删除过程
示例:
rm -i *.tmp      # 交互式删除所有tmp文件
rm -rf obsolete/ # 强制递归删除整个目录
find . -name "*.bak" -exec rm -v {} + # 查找并删除所有.bak文件

二、文件查看与编辑

1. 查看文件内容 (cat)

cat [选项] [文件]...
选项:
-n, --number      # 显示行号
-b, --number-nonblank # 对非空行编号
-s, --squeeze-blank # 压缩连续空行为一行
-E, --show-ends   # 在行尾显示$符号
-T, --show-tabs   # 将TAB显示为^I
-v, --show-nonprinting # 显示非打印字符(除了换行和TAB)
-A, --show-all    # 等于-vET
示例:
cat -n /etc/passwd       # 显示带行号的passwd文件
cat file1 file2 > combined # 合并两个文件
cat > newfile <<EOF      # 从标准输入创建文件(输入EOF结束)

2. 分页查看文件 (less/more)

less [选项] 文件
more [选项] 文件
less常用操作:
空格/f    # 向下翻一页
b        # 向上翻一页
/字符串   # 向下搜索
?字符串   # 向上搜索
n        # 重复前一个搜索
N        # 反向重复前一个搜索
g        # 跳到第一行
G        # 跳到最后一行
q        # 退出
选项:
-N       # 显示行号
-i       # 搜索时忽略大小写
-m       # 显示更多提示信息
+cmd     # 启动时执行命令(如less +/pattern file)
示例:
less -N +F /var/log/syslog  # 查看日志文件(带行号并跟踪尾部)
less -i /etc/services      # 忽略大小写搜索

3. 查看文件头部/尾部 (head/tail)

head [选项] [文件]...
tail [选项] [文件]...
head选项:
-n, --lines=NUM # 显示前NUM行(默认10)
-c, --bytes=NUM # 显示前NUM字节
-q, --quiet     # 不显示文件名头
-v, --verbose   # 总是显示文件名头
tail选项:
-n, --lines=NUM # 显示最后NUM行(默认10)
-c, --bytes=NUM # 显示最后NUM字节
-f, --follow    # 实时跟踪文件增长
-F              # 类似-f,但会重试(适合日志轮转)
--pid=PID       # 与-f合用,当PID结束时停止跟踪
-s, --sleep-interval=N # 与-f合用,设置睡眠间隔(秒)
示例:
head -n 20 /var/log/dmesg  # 显示日志前20行
tail -f /var/log/nginx/access.log # 实时查看访问日志
tail -n 100 -s 5 -f logfile # 查看最后100行并每5秒刷新

4. 文本编辑器 (nano/vim)

nano基础用法:

nano [选项] 文件名
常用快捷键:
Ctrl+O    # 保存文件
Ctrl+X    # 退出
Ctrl+W    # 搜索
Ctrl+\    # 替换
Ctrl+K    # 剪切行
Ctrl+U    # 粘贴
Ctrl+G    # 打开帮助

vim基础模式:

  1. 普通模式(默认):移动光标、删除、复制等操作
  2. 插入模式(i/I/a/A/o/O):编辑文本
  3. 命令行模式(:):执行命令、保存、退出等
vim [选项] 文件名
常用命令:
i        # 进入插入模式
ESC      # 返回普通模式
:w       # 保存文件
:wq      # 保存并退出
:q!      # 强制退出不保存
dd       # 删除当前行
yy       # 复制当前行
p        # 粘贴
/pattern # 搜索
:noh     # 取消搜索高亮
:set nu  # 显示行号
:sp file # 水平分割窗口
:vsp file # 垂直分割窗口

三、文件权限与属性

1. 修改权限 (chmod)

chmod [选项] 模式 文件...
模式格式:
1. 符号模式: [ugoa][+-=][rwxXst]
   u: 所有者 g: 所属组 o: 其他 a: 所有
   +: 添加权限 -: 移除权限 =: 设置权限
   r: 读 w: 写 x: 执行 X: 仅当文件是目录或已有执行权限
   s: setuid/setgid t: 粘滞位
2. 数字模式: 3位或4位八进制数
   第一位(可选): setuid(4),setgid(2),粘滞位(1)
   第二位: 所有者权限(rwx=4+2+1)
   第三位: 组权限
   第四位: 其他用户权限
选项:
-R, --recursive # 递归修改
-v, --verbose   # 显示修改信息
--reference=RFILE # 参照RFILE的权限
示例:
chmod u+x script.sh    # 给所有者添加执行权限
chmod go-w file.txt    # 移除组和其他用户的写权限
chmod -R 755 directory/ # 递归设置目录权限为755
chmod --reference=ref.txt target.txt # 使用参考文件权限

2. 修改所有者 (chown)

chown [选项] [所有者][:[组]] 文件...
选项:
-R, --recursive # 递归修改
-v, --verbose   # 显示修改信息
--from=当前所有者:当前组 # 只修改匹配的所有者/组
--reference=RFILE # 参照RFILE的所有者和组
示例:
chown user:group file.txt  # 修改所有者和组
chown -R www-data:www-data /var/www # 递归修改网站目录
chown --reference=ref.txt target.txt # 使用参考文件属性

3. 修改所属组 (chgrp)

chgrp [选项] 组 文件...
选项:
-R, --recursive # 递归修改
-v, --verbose   # 显示修改信息
--reference=RFILE # 参照RFILE的组
示例:
chgrp staff /shared  # 修改/shared目录的组为staff
chgrp -R dev project/ # 递归修改项目目录组

4. 特殊权限位

  1. setuid(4): 执行时以文件所有者权限运行
    chmod u+s /usr/bin/passwd
  2. setgid(2):
  • 对文件:执行时以文件所属组权限运行
  • 对目录:新建文件继承目录的组
    chmod g+s /shared
  1. 粘滞位(1): 对目录设置,只有文件所有者才能删除
    chmod o+t /tmp

示例:

chmod 4755 /usr/local/bin/special  # setuid
chmod 2775 /shared                 # setgid
chmod 1777 /tmp                    # 粘滞位

四、文件查找与定位

1. 查找文件 (find)

find [路径...] [表达式]
常用表达式:
-name 模式      # 按文件名匹配(支持通配符*?[])
-iname 模式     # 不区分大小写的-name
-type 类型      # f(文件),d(目录),l(链接)等
-size [+-]N[cwbkMG] # 按大小查找(+表示大于,-表示小于)
-mtime N       # 按修改时间查找(N天前)
-atime N       # 按访问时间查找
-ctime N       # 按状态变更时间查找
-user 用户名    # 按所有者查找
-group 组名     # 按所属组查找
-perm 模式      # 按权限查找
-exec 命令 {} + # 对找到的文件执行命令
-print         # 打印匹配文件(默认)
-delete        # 删除匹配文件
-maxdepth N    # 最大搜索深度
-mindepth N    # 最小搜索深度
示例:
find / -name "*.conf" -type f  # 查找所有.conf文件
find ~ -size +10M -exec ls -lh {} + # 查找大于10M的文件并显示详情
find /var/log -mtime +30 -delete # 删除30天前的日志文件
find . -perm /u=x,g=x,o=x -type f # 查找任何用户可执行的文件

2. 定位命令路径 (which/whereis)

which [选项] 命令名...
选项:
-a      # 显示所有匹配路径,而不仅是第一个
--skip-alias # 忽略别名
示例:
which python    # 查找python命令路径
which -a java   # 查找所有java命令路径
whereis [选项] 命令名...
选项:
-b      # 只查找二进制文件
-m      # 只查找手册页
-s      # 只查找源代码
-f      # 显示文件名前不显示路径类别
示例:
whereis -b ls    # 查找ls命令的二进制文件
whereis -m gcc   # 查找gcc的手册页

3. 快速文件定位 (locate)

locate [选项] 模式...
选项:
-i, --ignore-case # 忽略大小写
-c, --count      # 只显示匹配数量
-l, --limit N    # 限制显示数量
-r, --regexp REGEXP # 使用基本正则表达式
--regex         # 使用扩展正则表达式
-b, --basename  # 只匹配基本名
-d, --database DBPATH # 使用指定数据库
示例:
locate -i "*.jpg"      # 查找所有jpg图片(不区分大小写)
locate -l 10 passwd    # 查找passwd文件(限制10个结果)
sudo updatedb         # 更新locate数据库(需要root权限)

五、文本处理工具

1. 文本搜索 (grep)

grep [选项] 模式 [文件...]
常用选项:
-i, --ignore-case # 忽略大小写
-v, --invert-match # 显示不匹配的行
-n, --line-number # 显示行号
-c, --count      # 只显示匹配行数
-l, --files-with-matches # 只显示包含匹配的文件名
-L, --files-without-match # 只显示不包含匹配的文件名
-r, -R, --recursive # 递归搜索目录
-w, --word-regexp # 匹配整个单词
-x, --line-regexp # 匹配整行
-A NUM, --after-context=NUM # 显示匹配行后NUM行
-B NUM, --before-context=NUM # 显示匹配行前NUM行
-C NUM, --context=NUM # 显示匹配行前后各NUM行
-E, --extended-regexp # 使用扩展正则表达式
-F, --fixed-strings # 固定字符串匹配(非正则)
--color=auto    # 高亮匹配文本
示例:
grep -i "error" /var/log/syslog  # 在日志中搜索error(忽略大小写)
grep -r --include="*.c" "main" . # 递归搜索.c文件中的main函数
grep -A3 -B2 "panic" dmesg       # 显示panic前后各3行和2行

2. 流编辑器 (sed)

sed [选项] '命令' [输入文件...]
常用命令:
s/正则/替换/标志 # 替换文本
p              # 打印当前行
d              # 删除当前行
a\text         # 在当前行后追加文本
i\text         # 在当前行前插入文本
c\text         # 替换当前行
q              # 退出
r 文件         # 读取文件内容并追加
w 文件         # 写入匹配行到文件
y/源/目标/     # 字符转换(类似tr)
=              # 打印行号
标志:
g             # 全局替换(非首次匹配)
i             # 忽略大小写
p             # 打印替换的行
数字          # 替换第N个匹配
选项:
-n, --quiet, --silent # 不自动打印模式空间
-e 脚本       # 添加脚本到命令执行
-f 脚本文件    # 添加脚本文件内容到命令执行
-i[SUFFIX]    # 原地编辑文件(可选备份后缀)
-r, --regexp-extended # 使用扩展正则表达式
示例:
sed 's/foo/bar/g' file.txt       # 替换所有foo为bar
sed -i.bak '/^#/d;/^$/d' config  # 删除注释和空行(创建备份)
sed -n '10,20p' file.txt         # 打印10-20行
sed '/pattern/{n;d;}' file       # 删除匹配行后的下一行

3. 文本分析工具 (awk)

awk [选项] '模式 {动作}' [文件...]
内置变量:
FS           # 输入字段分隔符(默认空格)
OFS          # 输出字段分隔符(默认空格)
RS           # 输入记录分隔符(默认换行)
ORS          # 输出记录分隔符(默认换行)
NF           # 当前记录字段数
NR           # 当前记录数(所有文件累计)
FNR          # 当前文件记录数
FILENAME     # 当前文件名
$0           # 整条记录
$1,$2,...$NF # 第1,2,...NF个字段
常用函数:
length(s)    # 返回字符串长度
substr(s,m,n) # 返回s从m开始n个字符的子串
split(s,a,sep) # 用sep分隔s到数组a
index(s,t)   # 返回t在s中的位置
match(s,r)   # 返回正则r在s中的位置
sub(r,t,s)   # 在s中用t替换第一个r匹配
gsub(r,t,s)  # 在s中用t替换所有r匹配
system(cmd)  # 执行系统命令并返回退出状态
选项:
-F fs        # 设置字段分隔符
-v var=value # 定义awk变量
-f program-file # 从文件读取awk程序
示例:
awk -F: '{print $1,$6}' /etc/passwd  # 打印用户名和家目录
awk 'NR%2==1 {print}' file.txt       # 打印奇数行
awk 'BEGIN{sum=0} {sum+=$3} END{print sum}' data.txt # 计算第三列总和
awk -v OFS="\t" '{print $1,$3}' file # 制表符分隔输出

4. 排序与去重 (sort/uniq)

sort命令:

sort [选项] [文件...]
选项:
-b, --ignore-leading-blanks # 忽略前导空格
-f, --ignore-case           # 不区分大小写
-g, --general-numeric-sort  # 通用数值排序
-n, --numeric-sort          # 按字符串数值排序
-h, --human-numeric-sort    # 人类可读数值排序(2K,1G等)
-r, --reverse               # 反向排序
-k, --key=POS1[,POS2]       # 按指定字段排序
-t, --field-separator=SEP   # 指定字段分隔符
-u, --unique                # 去重(只输出相等行的第一个)
-c, --check                # 检查是否已排序
-o, --output=FILE          # 输出到文件
-m, --merge               # 合并已排序文件
--parallel=N              # 设置排序线程数
示例:
sort -nrk 3 data.txt       # 按第三列数值反向排序
sort -t: -k3n /etc/passwd  # 按用户ID数值排序
sort -u names.txt          # 去重排序
sort -k1,1 -k2,2n data     # 主键第一列,次键第二列数值排序

uniq命令:

uniq [选项] [输入文件 [输出文件]]
选项:
-c, --count      # 统计重复行数
-d, --repeated   # 只显示重复行
-D, --all-repeated[=METHOD] # 显示所有重复行
-f, --skip-fields=N # 跳过前N个字段比较
-i, --ignore-case # 忽略大小写
-s, --skip-chars=N # 跳过前N个字符比较
-u, --unique     # 只显示不重复行
-w, --check-chars=N # 比较前N个字符
--group=METHOD   # 显示所有行,用空行分隔组
示例:
uniq -c sorted.txt       # 统计每行出现次数
uniq -d -i passwords.txt # 查找不区分大小写的重复行
sort file.txt | uniq -u  # 找出唯一行(先排序)

六、系统信息与监控

1. 系统信息 (uname/uptime)

uname命令:

uname [选项]
选项:
-a, --all              # 显示所有信息(默认)
-s, --kernel-name      # 内核名称(如Linux)
-n, --nodename         # 网络节点主机名
-r, --kernel-release   # 内核发布版本
-v, --kernel-version   # 内核版本
-m, --machine          # 硬件架构
-p, --processor        # 处理器类型
-i, --hardware-platform # 硬件平台
-o, --operating-system # 操作系统
示例:
uname -a              # 显示所有系统信息
uname -r              # 显示内核版本

uptime命令:

uptime [选项]
输出格式:
当前时间 系统运行时间 用户数 平均负载(1,5,15分钟)
选项:
-p, --pretty   # 简洁格式显示运行时间
-s, --since    # 系统启动时间
-h, --help     # 显示帮助
示例:
uptime          # 21:30:10 up 15 days,  3:22,  2 users,  load average: 0.15, 0.10, 0.05
uptime -p       # up 2 weeks, 3 days, 4 hours, 10 minutes

2. 进程监控 (top/htop/ps)

top命令:

top [选项]
交互命令:
h        # 帮助
q        # 退出
Space    # 立即刷新
P        # 按CPU使用排序
M        # 按内存使用排序
N        # 按PID排序
T        # 按运行时间排序
k        # 终止进程(输入PID)
r        # 更改进程优先级(renice)
d or s   # 更改刷新间隔
W        # 保存当前设置到~/.toprc
Z        # 切换颜色显示
c        # 显示完整命令
1        # 显示每个CPU核心统计
选项:
-b       # 批处理模式
-c       # 显示完整命令
-d 延迟  # 设置刷新间隔(秒)
-n 次数  # 刷新次数后退出
-p PID   # 监控指定PID
-u 用户  # 监控指定用户进程
示例:
top -d 1 -n 10 -b > top.log  # 记录10次top输出到文件
top -u mysql               # 监控mysql用户进程

htop命令(需安装):

htop [选项]
交互命令(类似top,更丰富):
F1       # 帮助
F2       # 设置
F3       # 搜索进程
F4       # 过滤进程
F5       # 树状显示
F6       # 选择排序字段
F7/F8    # 调整nice值
F9       # 发送信号(如kill)
Space    # 标记进程
U        # 取消所有标记
选项:
-u 用户  # 只显示指定用户进程
-p PID   # 只显示指定PID
-d 延迟  # 设置刷新间隔
-s 列    # 按指定列排序
示例:
htop -u root       # 显示root用户进程

ps命令:

ps [选项]
常用选项组合:
aux      # BSD风格(显示所有用户进程)
-ef      # 标准风格(完整格式)
-e, -A   # 显示所有进程
-a       # 显示终端相关进程
-u 用户  # 显示指定用户进程
-p PID   # 显示指定PID
--forest # 树状显示进程关系
输出列说明:
USER     # 进程所有者
PID      # 进程ID
%CPU     # CPU占用百分比
%MEM     # 内存占用百分比
VSZ      # 虚拟内存使用量(KB)
RSS      # 物理内存使用量(KB)
TTY      # 关联终端
STAT     # 进程状态(R运行,S睡眠,T停止,Z僵尸,D不可中断等)
START    # 启动时间
TIME     # 累计CPU时间
COMMAND  # 命令名/命令行
示例:
ps aux --sort=-%cpu | head -10  # 显示CPU占用最高的10个进程
ps -ef --forest                # 树状显示所有进程
ps -u root -o pid,cmd          # 显示root用户的PID和命令

3. 内存与交换空间 (free)

free [选项]
选项:
-b, --bytes    # 以字节显示
-k, --kilo     # 以KB显示(默认)
-m, --mega     # 以MB显示
-g, --giga     # 以GB显示
-h, --human    # 人类可读格式(自动选择单位)
-s N, --seconds N # 每N秒刷新一次
-c N, --count N # 刷新N次后退出
-t, --total    # 显示总统计行
--si           # 使用1000而非1024为基数
输出说明:
              total        used        free      shared  buff/cache   available
Mem:        8168896     2140128     2580500      320356     3448268     5343104
Swap:       2097148           0     2097148
示例:
free -h       # 人类可读格式显示内存使用
free -s 5 -c 3 # 每5秒刷新一次,共3次

4. 磁盘空间 (df/du)

df命令:

df [选项] [文件...]
选项:
-a, --all      # 显示所有文件系统(包括伪文件系统)
-h, --human-readable # 人类可读格式
-H, --si       # 类似-h但使用1000为基数
-i, --inodes   # 显示inode信息而非块使用
-l, --local    # 只显示本地文件系统
-T, --print-type # 显示文件系统类型
-t, --type=类型 # 只显示指定类型的文件系统
-x, --exclude-type=类型 # 排除指定类型
示例:
df -hT         # 显示所有挂载点的人类可读信息
df -h /home    # 显示/home分区使用情况
df -i /tmp     # 显示/tmp的inode使用

du命令:

du [选项] [文件...]
选项:
-a, --all      # 显示所有文件统计(不只是目录)
-c, --total    # 显示总计
-h, --human-readable # 人类可读格式
-H, --si       # 类似-h但使用1000为基数
-s, --summarize # 只显示总计
--max-depth=N  # 显示N级子目录
--exclude=模式 # 排除匹配模式的文件
--time        # 显示修改时间
--threshold=SIZE # 只显示大于SIZE的文件
示例:
du -sh /var/log  # 显示/var/log总大小
du -ah --max-depth=1 ~ | sort -hr | head -10 # 显示家目录下最大的10个文件/目录
du -csh *.iso    # 显示当前目录ISO文件大小及总计

七、网络工具

1. 网络接口信息 (ifconfig/ip)

ifconfig命令:

ifconfig [接口] [选项]
常用选项:
up       # 激活接口
down     # 禁用接口
inet IP  # 设置IPv4地址
netmask MASK # 设置子网掩码
broadcast ADDR # 设置广播地址
mtu SIZE # 设置MTU大小
hw ether MAC # 设置MAC地址
示例:
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up # 配置eth0
ifconfig eth0 down    # 禁用eth0
ifconfig -a           # 显示所有接口(包括未激活)

ip命令(现代替代):

ip [选项] 对象 {命令}
常用对象:
link     # 网络设备
addr     # IP地址
route    # 路由表
neigh    # ARP/NDISC缓存
示例:
ip addr show           # 显示所有接口地址(类似ifconfig)
ip addr add 192.168.1.100/24 dev eth0 # 添加IP地址
ip link set eth0 up    # 启用eth0接口
ip route show          # 显示路由表
ip -s link            # 显示接口统计信息

2. 网络连通性测试 (ping)

ping [选项] 目标主机
选项:
-c COUNT # 发送指定数量包后停止
-i INTERVAL # 设置包间隔(秒)
-s SIZE  # 指定数据包大小(字节)
-t TTL   # 设置TTL值
-w DEADLINE # 设置超时时间(秒)
-q       # 安静模式(只显示统计)
-D       # 打印时间戳
-f       # 洪水ping(快速发送)
-I INTERFACE # 指定源接口
示例:
ping -c 5 google.com    # ping 5次后停止
ping -i 0.5 -s 1000 example.com # 每0.5秒发送1000字节包
ping -w 10 -q 192.168.1.1 # 10秒内安静模式ping

3. 网络连接信息 (netstat/ss)

netstat命令:

netstat [选项]
选项:
-a, --all      # 显示所有连接(包括监听)
-t, --tcp      # 显示TCP连接
-u, --udp      # 显示UDP连接
-l, --listening # 只显示监听端口
-p, --programs # 显示进程/程序名
-n, --numeric  # 显示数字地址(不解析)
--numeric-ports # 显示数字端口(不解析服务名)
--numeric-hosts # 显示数字主机(不解析主机名)
-r, --route    # 显示路由表
-i, --interfaces # 显示接口表
-s, --statistics # 显示协议统计
示例:
netstat -tulnp  # 显示所有TCP/UDP监听端口及进程
netstat -rn     # 显示数字格式的路由表
netstat -s      # 显示网络协议统计信息

ss命令(现代替代):

ss [选项] [过滤]
选项:
-a, --all      # 显示所有套接字
-l, --listening # 显示监听套接字
-p, --processes # 显示进程信息
-n, --numeric  # 数字格式显示
-t, --tcp      # 显示TCP套接字
-u, --udp      # 显示UDP套接字
-s, --summary  # 显示套接字统计
-o, --options  # 显示计时器信息
-m, --memory   # 显示套接字内存使用
-i, --info     # 显示TCP内部信息
state STATE    # 按状态过滤(如ESTAB,CLOSE-WAIT)
示例:
ss -tunap      # 类似netstat -tulnp
ss -o state established '( dport = :http or sport = :http )' # 显示所有HTTP连接
ss -s          # 显示套接字统计摘要

4. 路由跟踪 (traceroute/tracepath)

traceroute命令:

traceroute [选项] 目标主机
选项:
-n       # 数字格式显示(不解析主机名)
-m MAX   # 设置最大TTL(默认30)
-q NUM   # 每跳探测包数(默认3)
-w SEC   # 设置等待时间(秒)
-I       # 使用ICMP ECHO代替UDP
-T       # 使用TCP SYN(默认80端口)
-U       # 使用UDP(默认53端口)
-p PORT  # 设置目标端口
示例:
traceroute -n google.com    # 数字格式跟踪路由
traceroute -I -m 20 example.com # 使用ICMP最多20跳
traceroute -T -p 443 github.com # TCP SYN跟踪443端口

tracepath命令:

tracepath [选项] 目标主机
选项:
-n       # 数字格式显示
-b       # 同时显示主机名和IP
-l SIZE  # 设置初始包大小
-m MAX   # 设置最大跳数(默认30)
示例:
tracepath -n 8.8.8.8      # 数字格式跟踪
tracepath -m 15 google.com # 最多15跳

5. 域名解析 (dig/nslookup/host)

dig命令:

dig [@服务器] [选项] 域名 [类型]
常用类型:
A       # IPv4地址(默认)
AAAA    # IPv6地址
MX      # 邮件交换记录
NS      # 域名服务器
TXT     # 文本记录
CNAME   # 别名记录
SOA     # 权威起始记录
ANY     # 所有记录
选项:
+short  # 简短输出
+trace  # 跟踪递归查询
+stats  # 显示查询统计
-x IP   # 反向查询(PTR)
-f FILE # 批量查询文件中的域名
示例:
dig google.com MX          # 查询MX记录
dig +trace example.com     # 跟踪解析过程
dig -x 8.8.8.8             # 反向查询IP
dig @8.8.8.8 +short example.com A # 使用Google DNS简短查询

nslookup命令:

nslookup [选项] [域名] [服务器]
交互模式命令:
server DNS  # 设置查询服务器
set type=T  # 设置查询类型
exit        # 退出
示例:
nslookup google.com       # 基本查询
nslookup -type=MX example.com # 查询MX记录
nslookup                   # 进入交互模式
> server 8.8.8.8
> set type=AAAA
> google.com

host命令:

host [选项] 域名 [服务器]
选项:
-a       # 相当于-v -t ANY
-t TYPE  # 指定查询类型
-v       # 详细输出
-r       # 非递归查询
-4       # 只使用IPv4
-6       # 只使用IPv6
示例:
host -t MX google.com     # 查询MX记录
host -a example.com       # 查询所有记录
host 8.8.8.8              # 反向查询

八、系统管理与维护

1. 用户管理 (useradd/usermod/userdel)

useradd命令:

useradd [选项] 用户名
选项:
-c, --comment COMMENT # 用户备注信息(如全名)
-d, --home HOME_DIR   # 指定家目录
-e, --expiredate EXPIRE_DATE # 设置账户过期日期(YYYY-MM-DD)
-g, --gid GROUP       # 指定主组
-G, --groups GROUPS   # 指定附加组(逗号分隔)
-m, --create-home     # 创建家目录(默认在某些发行版)
-M, --no-create-home  # 不创建家目录
-s, --shell SHELL     # 指定登录shell
-u, --uid UID         # 指定用户ID
-p, --password PASSWORD # 设置加密密码(不推荐)
-r, --system          # 创建系统账户
示例:
useradd -m -c "John Doe" -s /bin/bash -G sudo,developers johnd # 创建普通用户
useradd -r -s /usr/sbin/nologin backup # 创建系统账户

usermod命令:

usermod [选项] 用户名
选项(类似useradd):
-c, -d, -e, -g, -G, -s, -u # 同useradd
-l, --login NEW_LOGIN # 修改用户名
-L, --lock           # 锁定账户
-U, --unlock         # 解锁账户
-a, --append         # 与-G合用,追加附加组而非替换
示例:
usermod -aG sudo johnd # 将johnd添加到sudo组
usermod -s /sbin/nologin olduser # 禁止登录
usermod -L johnd       # 锁定账户

userdel命令:

userdel [选项] 用户名
选项:
-f, --force         # 强制删除(即使用户已登录)
-r, --remove        # 删除家目录和邮件池
示例:
userdel -r olduser  # 完全删除用户及其家目录

2. 组管理 (groupadd/groupmod/groupdel)

groupadd命令:

groupadd [选项] 组名
选项:
-g, --gid GID       # 指定组ID
-r, --system        # 创建系统组
-p, --password PASSWORD # 设置组密码
示例:
groupadd -g 10000 developers # 创建指定GID的组
groupadd -r systemgrp        # 创建系统组

groupmod命令:

groupmod [选项] 组名
选项:
-g, --gid GID       # 修改组ID
-n, --new-name NEW_GROUP # 修改组名
-p, --password PASSWORD # 修改组密码
示例:
groupmod -n oldgroup newgroup # 重命名组
groupmod -g 10001 developers # 修改组GID

groupdel命令:

groupdel [选项] 组名
选项:
-f, --force         # 强制删除(即使有成员)
示例:
groupdel oldgroup   # 删除组

3. 密码管理 (passwd/chpasswd)

passwd命令:

passwd [选项] [用户名]
选项:
-d, --delete        # 删除密码(变为无密码账户)
-l, --lock          # 锁定账户
-u, --unlock        # 解锁账户
-e, --expire        # 使密码立即过期
-n, --mindays MIN   # 设置密码最短使用天数
-x, --maxdays MAX   # 设置密码最长使用天数
-w, --warndays WARN # 密码过期前警告天数
-i, --inactive INACTIVE # 密码过期后宽限天数
-S, --status        # 显示账户状态
--stdin            # 从标准输入读取密码(脚本中使用)
示例:
passwd             # 修改当前用户密码
passwd -S johnd    # 查看johnd账户密码状态
echo "newpass" | passwd --stdin johnd # 非交互式设置密码(某些发行版不支持)

chpasswd命令(批量修改密码):

chpasswd [选项]
选项:
-e, --encrypted    # 提供的密码已加密
-m, --md5          # 使用MD5加密而非DES
-c, --crypt-method METHOD # 指定加密方法(DES,MD5,SHA256,SHA512)
-s, --sha-rounds ROUNDS # SHA加密轮数
示例:
echo "johnd:newpass" | chpasswd # 修改johnd密码
chpasswd < users.txt            # 从文件批量修改(格式: 用户名:密码)

4. 计划任务 (crontab/at)

crontab命令:

crontab [选项] [文件]
选项:
-e, --edit        # 编辑当前用户的crontab
-l, --list        # 列出当前用户的crontab
-r, --remove      # 删除当前用户的crontab
-u, --user USER   # 指定用户(需要root权限)
-i, --interactive # 删除前确认
crontab文件格式:
分 时 日 月 周 命令
* * * * * command
| | | | |
| | | | +----- 星期 (0 - 6) (周日=0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 日 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)
特殊字符:
*        # 任何值
,        # 值列表分隔符
-        # 范围
/        # 步长值
示例:
crontab -e            # 编辑当前用户计划任务
# 每天3:30备份
30 3 * * * /home/user/backup.sh
# 每周一至周五9点到17点每小时的第5分钟
5 9-17 * * 1-5 /path/to/command
# 每10分钟
*/10 * * * * /usr/bin/check_status

at命令:

at [选项] 时间
时间格式:
HH:MM     # 今天或明天的指定时间
midnight/noon/teatime # 特殊时间词
now + N minutes/hours/days/weeks # 相对时间
MMDDYY, MM/DD/YY, DD.MM.YY # 绝对日期
选项:
-f FILE   # 从文件读取命令
-m        # 作业完成后发送邮件
-q queue  # 指定队列(a-z,A=z=26)
-l        # 列出待处理作业(=atq)
-d ID     # 删除作业(=atrm)
-c ID     # 查看作业详情
示例:
at now + 1 hour
at> /path/to/script.sh
at> Ctrl+D
at -l               # 列出作业
at -c 1             # 查看作业1详情
at -f jobs.txt 3pm tomorrow # 从文件读取命令

5. 系统服务管理 (systemctl)

systemctl [选项] 命令 [单元...]
常用命令:
start      # 启动服务
stop       # 停止服务
restart    # 重启服务
reload     # 重载配置(不重启)
enable     # 设置开机启动
disable    # 取消开机启动
status     # 查看服务状态
is-active  # 检查是否运行
is-enabled # 检查是否启用
list-units # 列出所有单元
mask       # 屏蔽服务(防止手动或自动启动)
unmask     # 取消屏蔽
选项:
--type=TYPE # 过滤单元类型(service,socket等)
--all      # 显示所有单元(包括不活动的)
--failed   # 只显示失败单元
-H, --host=HOST # 操作远程主机
示例:
systemctl start nginx      # 启动nginx
systemctl enable --now docker # 启用并立即启动docker
systemctl list-units --type=service --all # 列出所有服务
systemctl status sshd      # 查看sshd状态
journalctl -u nginx -f     # 查看nginx日志(实时)

九、软件包管理

1. Debian/Ubuntu (APT)

apt [选项] 命令
常用命令:
update       # 更新包索引
upgrade      # 升级所有可升级包
full-upgrade # 升级时处理依赖关系变化
install      # 安装包
remove       # 删除包(保留配置)
purge       # 完全删除包(包括配置)
autoremove  # 删除自动安装且不再需要的包
search      # 搜索包
show        # 显示包详情
list        # 列出包
--installed # 列出已安装包
--upgradable # 列出可升级包
edit-sources # 编辑源列表
clean       # 删除本地缓存
autoclean   # 删除旧版本包缓存
选项:
-y, --yes   # 自动确认
--no-install-recommends # 不安装推荐包
--only-upgrade # 只升级指定包
--reinstall # 重新安装包
示例:
apt update && apt upgrade -y      # 更新并升级所有包
apt install -y nginx mysql-server # 安装nginx和mysql
apt purge --auto-remove package   # 完全删除包及不需要的依赖
apt search "^python3"            # 搜索python3开头的包
apt list --upgradable            # 列出可升级包

2. RedHat/CentOS (YUM/DNF)

yum命令:

yum [选项] 命令 [包...]
常用命令:
install     # 安装包
update      # 更新包
upgrade     # 升级包(同update)
remove      # 删除包
autoremove  # 删除不需要的依赖
search      # 搜索包
info        # 显示包信息
list        # 列出包
--installed # 列出已安装包
--available # 列出可用包
--updates   # 列出可更新包
clean       # 清理缓存
history     # 查看操作历史
groupinstall # 安装包组
provides    # 查找提供某文件的包
选项:
-y          # 自动确认
--nogpgcheck # 跳过GPG验证
-q, --quiet # 安静模式
-v          # 详细模式
示例:
yum install -y httpd php mysql  # 安装Apache,PHP,MySQL
yum update --security           # 只安装安全更新
yum provides */bin/nginx        # 查找提供nginx的包
yum history undo 3              # 撤销事务ID为3的操作

dnf命令(现代替代):

dnf [选项] 命令 [包...]
常用命令(类似yum):
install/remove/update/upgrade/search/list/info
autoremove/clean/history/group/provides
repoquery    # 查询仓库信息
download     # 下载包不安装
reinstall    # 重新安装包
新增选项:
--refresh    # 强制刷新元数据
--best       # 尝试最佳版本升级
--allowerasing # 允许解决依赖时删除包
示例:
dnf install -y --allowerasing package # 允许删除冲突包
dnf repoquery -l nginx        # 列出nginx包的文件
dnf history userinstalled     # 查看用户安装的包

3. Arch Linux (Pacman)

pacman [选项] 命令 [包...]
常用命令:
-S, --sync    # 安装包
-Syu         # 更新系统
-Ss          # 搜索包
-Si          # 显示包信息
-Q, --query  # 查询本地包数据库
-Qi          # 查看已安装包信息
-Qs          # 搜索已安装包
-R, --remove # 删除包
-Rns         # 删除包及依赖和配置
-F, --files  # 查询文件属于哪个包
-U           # 安装本地包文件
--deptest    # 检查依赖
选项:
--noconfirm  # 不询问确认
--needed     # 不重新安装已更新的包
--asdeps/--asexplicit # 标记为依赖/显式安装
示例:
pacman -Syu              # 更新系统
pacman -S package        # 安装包
pacman -Rns unneeded     # 完全删除包
pacman -Qs python        # 搜索已安装的python包
pacman -Fy               # 更新文件数据库
pacman -F $(which nginx) # 查找提供nginx的包

4. 通用编译安装步骤

# 1. 下载源码包
wget http://example.com/package.tar.gz
# 2. 解压
tar -xzvf package.tar.gz
cd package/
# 3. 配置(检查依赖,设置安装路径等)
./configure --prefix=/usr/local
# 4. 编译
make -j$(nproc)  # 使用所有CPU核心并行编译
# 5. 安装
sudo make install
# 6. 清理(可选)
make clean
# 卸载(如果支持)
sudo make uninstall
# 如果未提供uninstall目标,可以手动删除:
sudo rm -rf /usr/local/bin/command \
            /usr/local/lib/libname* \
            /usr/local/include/header.h

十、磁盘与文件系统

1. 磁盘分区 (fdisk/parted)

fdisk命令:

fdisk [选项] 设备
常用命令(交互模式):
m        # 显示帮助
p        # 打印分区表
n        # 创建新分区
d        # 删除分区
t        # 更改分区类型
w        # 写入并退出
q        # 退出不保存
选项:
-l, --list # 列出分区表
-u, --units # 显示单位(cylinders/sectors)
示例:
fdisk -l              # 列出所有磁盘分区
fdisk /dev/sdb        # 对sdb进行分区操作

parted命令:

parted [选项] [设备 [命令]]
常用命令:
print      # 打印分区表
mkpart    # 创建分区(primary/logical 文件系统 起始 结束)
rm        # 删除分区
set       # 设置标记(如boot)
mklabel   # 创建磁盘标签(如msdos,gpt)
unit      # 设置单位(如MB,GB,s,%)
align-check # 检查对齐
选项:
-s, --script # 脚本模式(不提示)
-l, --list  # 列出所有设备分区
示例:
parted /dev/sda print          # 显示sda分区表
parted -s /dev/sdb mklabel gpt # 创建GPT分区表
parted -s /dev/sdb mkpart primary ext4 0% 100% # 创建整个磁盘的分区

2. 文件系统创建 (mkfs)

mkfs [选项] [-t 类型] [设备] [大小]
常用文件系统类型:
ext4     # Linux常用
xfs      # 高性能文件系统
btrfs    # 高级特性(快照,压缩等)
vfat     # FAT32(兼容Windows)
ntfs     # NTFS(Windows)
选项:
-V      # 详细输出
-L 标签 # 设置卷标
-N      # 设置inode数量
-c      # 检查坏块
专用选项(取决于文件系统类型):
-b 块大小 # 设置块大小(如1024,2048,4096)
-m 保留百分比 # 为root保留的空间百分比
-O 特性   # 设置文件系统特性
示例:
mkfs -t ext4 /dev/sdb1       # 创建ext4文件系统
mkfs.xfs -f -L data /dev/sdc1 # 强制创建XFS并设置标签
mkfs.vfat -F 32 /dev/sdd1    # 创建FAT32文件系统

3. 文件系统检查与修复 (fsck)

fsck [选项] [设备]
选项:
-A      # 检查/etc/fstab中的所有文件系统
-C      # 显示进度条
-N      # 只显示不执行
-P      # 并行检查根文件系统
-R      # 与-A合用,跳过根文件系统
-t 类型 # 指定文件系统类型
-y      # 自动修复
-p      # 自动修复安全的修复
示例:
fsck -y /dev/sda1      # 自动修复sda1
fsck -t ext4 /dev/sdb2 # 检查ext4文件系统
fsck -AR -y            # 检查并自动修复所有非根文件系统

4. 挂载与卸载 (mount/umount)

mount命令:

mount [选项] [设备] [挂载点]
选项:
-t 类型 # 指定文件系统类型
-o 选项 # 挂载选项(逗号分隔)
        # ro/rw: 只读/读写
        # noexec/exec: 不允许/允许执行
        # async/sync: 异步/同步写入
        # defaults: rw,suid,dev,exec,auto,nouser,async
        # remount: 重新挂载
-a      # 挂载/etc/fstab中的所有文件系统
-l      # 显示已挂载文件系统及标签
--bind  # 绑定挂载(将一个目录挂到另一个位置)
示例:
mount /dev/sdb1 /mnt/data      # 挂载sdb1到/data
mount -t nfs 192.168.1.100:/share /mnt/nfs # 挂载NFS共享
mount -o remount,ro /          # 将根文件系统重新挂载为只读
mount --bind /old /new         # 使/old内容在/new也可访问

umount命令:

umount [选项] [设备|挂载点]
选项:
-f      # 强制卸载(当设备忙时)
-l      # 延迟卸载(立即断开文件系统,等设备不再忙时清理)
-R      # 递归卸载
示例:
umount /mnt/data      # 通过挂载点卸载
umount /dev/sdb1      # 通过设备卸载
umount -R /mnt/nested # 递归卸载嵌套挂载

5. 交换空间管理 (swapon/swapoff)

swapon [选项] [设备]
选项:
-a      # 激活/etc/fstab中的所有swap
-s, --summary # 显示swap使用摘要
-p, --priority # 设置优先级
swapoff [选项] [设备]
示例:
swapon /dev/sdb2       # 激活swap分区
swapon -s             # 显示swap状态
swapoff /dev/sdb2     # 禁用swap分区
dd if=/dev/zero of=/swapfile bs=1M count=2048 # 创建2GB swap文件
mkswap /swapfile       # 设置为swap
chmod 600 /swapfile    # 设置权限
swapon /swapfile       # 启用swap文件

十一、性能监控与调试

1. 系统监控 (vmstat/iostat)

vmstat命令:

vmstat [选项] [间隔[次数]]
选项:
-a      # 显示活跃/非活跃内存
-f      # 显示从启动至今的fork数量
-m      # 显示slabinfo
-s      # 显示事件计数器和内存统计
-d      # 显示磁盘统计
-p 分区 # 显示指定分区统计
-S 单位 # 显示单位(k/K/m/M,默认KB)
-t      # 显示时间戳
-w      # 宽输出模式
输出列说明:
procs   # r:运行队列进程数 b:阻塞进程数
memory  # swpd:虚拟内存 free:空闲内存 buff:缓冲 cache:缓存
swap    # si:从磁盘交换进内存 so:从内存交换出磁盘
io      # bi:块设备接收 blk/s bo:块设备发送 blk/s
system  # in:中断数 cs:上下文切换数
cpu     # us:用户时间 sy:系统时间 id:空闲 wa:IO等待 st:虚拟机偷取时间
示例:
vmstat 1 5      # 每秒刷新一次,共5次
vmstat -d       # 显示磁盘I/O统计
vmstat -s -S M  # 以MB为单位显示内存统计

iostat命令:

iostat [选项] [间隔[次数]]
选项:
-c      # 只显示CPU统计
-d      # 只显示磁盘统计
-h      # 人类可读格式
-j {ID | PATH | UUID | ...} # 指定磁盘显示方式
-k      # 以KB为单位
-m      # 以MB为单位
-N      # 显示设备映射名
-p      # 显示块设备及其分区统计
-t      # 显示时间戳
-x      # 显示扩展统计
-z      # 忽略零活动统计
输出列说明:
%user    # 用户级别CPU使用率
%nice    # 低优先级用户级别CPU使用率
%system  # 系统级别CPU使用率
%iowait  # CPU等待IO时间
%steal   # 虚拟CPU等待时间
%idle    # CPU空闲时间
Device   # 设备名
tps      # 每秒传输数
kB_read/s # 每秒读取KB
kB_wrtn/s # 每秒写入KB
kB_dscd/s # 每秒丢弃KB
kB_read  # 总读取KB
kB_wrtn  # 总写入KB
示例:
iostat -dx 1 3      # 显示扩展磁盘统计,每秒1次共3次
iostat -p sda 2      # 显示sda及其分区统计,每2秒刷新
iostat -c -t -h      # 显示带时间戳的人类可读CPU统计

2. 进程监控 (pidstat/iotop)

pidstat命令:

pidstat [选项] [间隔[次数]]
选项:
-d      # 显示IO统计
-r      # 显示页错误和内存使用
-s      # 显示栈使用
-u      # 显示CPU使用(默认)
-w      # 显示任务切换
-p PID  # 指定PID
-t      # 显示线程而非进程
-h      # 所有统计在一行显示(便于处理)
示例:
pidstat -d 1 5      # 显示IO统计,每秒1次共5次
pidstat -p 1234 -u 2 3 # 显示PID 1234的CPU使用,每2秒共3次
pidstat -t -p 5678   # 显示进程5678的线程统计

iotop命令:

iotop [选项]
选项:
-o, --only       # 只显示实际I/O的进程
-b, --batch      # 非交互模式,用于脚本
-n NUM, --iter=NUM # 设置迭代次数后退出
-d SEC, --delay=SEC # 设置刷新间隔(默认1秒)
-p PID, --pid=PID # 只监视指定PID
-u USER, --user=USER # 只监视指定用户
-P, --processes  # 只显示进程,不显示线程
-a, --accumulated # 显示累计I/O而非带宽
-k, --kilobytes  # 使用KB而非B
交互命令:
左右箭头 # 改变排序字段
r        # 反向排序
o        # 只显示有I/O的进程
p        # 线程/进程显示切换
a        # 累计/实时带宽切换
q        # 退出
i        # 改变优先级
示例:
iotop -o -d 2      # 只显示有I/O的进程,每2秒刷新
iotop -b -n 3 -u mysql # 非交互式监视mysql用户I/O,刷新3次

3. 网络监控 (iftop/nethogs)

iftop命令:

iftop [选项] [过滤]
选项:
-i 接口 # 指定网络接口
-n      # 不解析主机名
-N      # 不解析端口为服务名
-B      # 以字节为单位(默认bit)
-F 网络 # 显示指定网络流量
-P      # 显示端口
-m 限制 # 设置带宽刻度(单位Kb)
-b      # 不显示流量条
-t      # 文本模式(无ncurses界面)
交互命令:
h        # 帮助
P        # 暂停显示
1/2/3    # 按1/2/3列排序
s/d      # 显示源/目标主机
S/D      # 显示源/目标端口
t        # 切换显示模式
j/k      # 上下滚动
l        # 屏幕过滤
L        # 调整刻度
q        # 退出
示例:
iftop -i eth0 -nNB -F 192.168.1.0/24 # 监视eth0上指定网络流量
iftop -P -m 10M      # 显示端口,刻度最大10Mbit

nethogs命令:

nethogs [选项] [设备]
选项:
-d 延迟 # 刷新间隔(秒)
-v 模式 # 视图模式(0=KB/s,1=KB,2=MB,3=MB/s)
-c 次数 # 刷新次数后退出
-t      # 追踪模式
-s      # 按发送流量排序
-a      # 监控所有设备
device  # 指定监控设备(如eth0)
交互命令:
m        # 切换显示单位(KB/MB)
r        # 按接收流量排序
s        # 按发送流量排序
q        # 退出
示例:
nethogs -d 2 -v 3 eth0 # 每2秒刷新,MB/s单位,监视eth0
nethogs -c 10 -t       # 追踪模式,刷新10次后退出

4. 系统日志查看 (journalctl)

journalctl [选项]
选项:
-b, --boot[=ID] # 当前/指定引导日志
-u, --unit=UNIT # 显示指定单元日志
-p, --priority=LEVEL # 按优先级过滤(emerg..debug)
-S, --since=, -U, --until= # 时间过滤
-f, --follow    # 跟踪日志
-r, --reverse   # 反向输出(最早优先)
-n, --lines=LIMIT # 限制行数
--no-pager     # 不适用分页器
--disk-usage   # 显示日志磁盘使用
--vacuum-size=, --vacuum-time= # 清理日志
-o, --output=FORMAT # 输出格式(short,verbose,json等)
-x, --catalog  # 添加消息解释
-k, --dmesg    # 只显示内核消息
示例:
journalctl -b -p err -u nginx # 显示本次启动nginx的错误日志
journalctl -f -u docker       # 实时跟踪docker日志
journalctl -S "2023-01-01" -U "2023-01-02" # 显示指定日期日志
journalctl --disk-usage       # 显示日志占用空间
journalctl --vacuum-size=200M # 限制日志最大200MB

十二、安全相关命令

1. 防火墙管理 (iptables/ufw/firewalld)

iptables命令:

iptables [选项] 命令 [链] [规则]
常用命令:
-L, --list [链] # 列出规则
-A, --append 链 规则 # 追加规则
-I, --insert 链 [编号] 规则 # 插入规则
-D, --delete 链 规则编号/规则 # 删除规则
-F, --flush [链] # 清空规则
-P, --policy 链 目标 # 设置链默认策略
-N, --new-chain 链 # 新建自定义链
-X, --delete-chain [链] # 删除自定义链
常用选项:
-p, --protocol 协议 # 指定协议(tcp,udp,icmp等)
-s, --source 地址 # 源地址
-d, --destination 地址 # 目标地址
--sport, --dport 端口 # 源/目标端口
-j, --jump 目标 # 跳转目标(ACCEPT,DROP,REJECT等)
-i, --in-interface 接口 # 输入接口
-o, --out-interface 接口 # 输出接口
-m, --match 模块 # 使用扩展模块(state,multiport等)
--state 状态 # 连接状态(NEW,ESTABLISHED等)
-v, --verbose # 详细输出
-n, --numeric # 数字格式显示地址和端口
示例:
iptables -L -n -v              # 详细列出所有规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许已建立连接
iptables -P INPUT DROP         # 设置INPUT链默认策略为DROP
iptables-save > /etc/iptables.rules # 保存规则
iptables-restore < /etc/iptables.rules # 恢复规则

ufw命令(简化防火墙):

ufw [选项] 命令
常用命令:
enable      # 启用防火墙
disable     # 禁用防火墙
status     # 显示状态
default    # 设置默认策略
allow      # 添加允许规则
deny       # 添加拒绝规则
reject     # 添加拒绝并回复规则
limit      # 添加限制规则(防暴力破解)
delete     # 删除规则
insert     # 插入规则
app list   # 列出应用程序配置
logging    # 设置日志级别
示例:
ufw enable               # 启用防火墙
ufw allow 22/tcp        # 允许SSH
ufw limit 22/tcp        # 限制SSH连接速率
ufw allow from 192.168.1.100 # 允许特定IP
ufw allow proto tcp to any port 80,443 # 允许HTTP/HTTPS
ufw status numbered     # 显示带编号的规则
ufw delete 3            # 删除规则3

firewalld命令:

firewall-cmd [选项]
常用命令:
--state                  # 显示状态
--reload                 # 重载配置(不中断连接)
--complete-reload        # 完全重载(中断连接)
--get-default-zone       # 显示默认区域
--set-default-zone=区域 # 设置默认区域
--get-zones             # 列出所有区域
--get-active-zones      # 列出活动区域
--list-all [--zone=区域] # 列出区域配置
--add-service=服务 [--zone=区域] # 添加服务
--remove-service=服务 [--zone=区域] # 移除服务
--add-port=端口/协议 [--zone=区域] # 添加端口
--remove-port=端口/协议 [--zone=区域] # 移除端口
--add-rich-rule='规则'   # 添加复杂规则
--remove-rich-rule='规则' # 移除复杂规则
--add-source=CIDR [--zone=区域] # 添加源地址
--remove-source=CIDR [--zone=区域] # 移除源地址
--permanent             # 永久配置(需--reload)
示例:
firewall-cmd --state            # 检查状态
firewall-cmd --permanent --add-service=http # 永久允许HTTP
firewall-cmd --permanent --add-port=8080/tcp # 永久允许8080端口
firewall-cmd --reload           # 重载配置
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' # 允许子网SSH

2. SSH相关 (ssh/scp/ssh-keygen)

ssh命令:

ssh [选项] [用户@]主机 [命令]
选项:
-p 端口 # 指定端口(默认22)
-i 密钥文件 # 指定身份文件
-L [绑定地址:]本地端口:目标主机:目标端口 # 本地端口转发
-R [绑定地址:]远程端口:目标主机:目标端口 # 远程端口转发
-D [绑定地址:]端口 # 动态SOCKS代理
-N        # 不执行远程命令(用于端口转发)
-f        # 后台运行
-q        # 安静模式
-v[vv]    # 详细模式
-X, -Y    # 启用X11转发(信任/不信任)
-t        # 强制分配伪终端
-o 选项   # 指定配置选项(如StrictHostKeyChecking=no)
示例:
ssh -p 2222 user@example.com       # 指定端口连接
ssh -i ~/.ssh/id_rsa_server root@server # 使用指定密钥登录
ssh -L 8080:localhost:80 gateway   # 本地端口转发
ssh -R 2222:localhost:22 gateway   # 远程端口转发
ssh -D 1080 user@proxy             # 创建SOCKS代理
ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" host # 跳过主机密钥检查

scp命令:

scp [选项] 源 目标
选项:
-P 端口 # 指定端口(默认22)
-p      # 保留文件属性
-r      # 递归复制目录
-q      # 安静模式
-C      # 压缩传输
-i 密钥 # 指定身份文件
-l 限制 # 带宽限制(Kbit/s)
源/目标格式:
本地文件: /path/to/file
远程文件: [user@]host:/path/to/file
示例:
scp -P 2222 file.txt user@example.com:~/ # 指定端口复制文件
scp -r project/ user@server:/backup/    # 递归复制目录
scp -C user@server:/var/log/*.log ./logs/ # 压缩复制日志文件
scp -i ~/.ssh/id_rsa -l 1000 largefile user@host:~/ # 限速1Mbit/s传输

ssh-keygen命令:

ssh-keygen [选项]
选项:
-t 类型 # 密钥类型(rsa,dsa,ecdsa,ed25519)
-b 位数 # 密钥位数(如rsa默认3072)
-f 文件 # 指定密钥文件
-C 注释 # 密钥注释(通常为email)
-N 密码 # 新密码短语
-p      # 更改密码短语
-q      # 安静模式
-y      # 从私钥提取公钥
-R 主机 # 从known_hosts删除主机
-F 主机 # 在known_hosts查找主机
示例:
ssh-keygen -t ed25519 -C "user@example.com" # 创建ED25519密钥
ssh-keygen -t rsa -b 4096
目录
相关文章
|
3月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
346 21
|
3月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
linux命令—tree
|
29天前
|
监控 Linux Shell
linux命令
常用 Linux 命令汇总
|
3月前
|
监控 Linux
Linux系统中使用df命令详解磁盘使用情况。
`df`命令是Linux系统管理员和用户监控和管理磁盘空间使用的重要工具。掌握它的基本使用方法和选项可以帮助在必要时分析和解决空间相关问题。简洁但功能丰富,`df`命令确保了用户可以快速有效地识别和管理文件系统的空间使用情况。
189 13
|
3月前
|
Unix Linux
linux命令—cd
`cd` 命令是 Linux/Unix 系统中用于切换工作目录的基础命令。支持相对路径与绝对路径,常用选项如 `-L` 和 `-P` 分别处理符号链接的逻辑与物理路径。实际操作中,可通过 `cd ..` 返回上级目录、`cd ~` 回到家目录,或利用 `cd -` 在最近两个目录间快速切换。结合 Tab 补全和 `pwd` 查看当前路径,能显著提升效率。此外,需注意特殊字符路径的正确引用及脚本中绝对路径的优先使用。
|
3月前
|
Linux
Linux命令拓展:为cp和mv添加进度显示
好了,就这样,让你的Linux复制体验充满乐趣吧!记住,每一个冷冰冰的命令背后,都有方法让它变得热情起来。
197 8
|
2月前
|
Linux C++
每天一个linux命令(8):cp 命令
cp 命令是 Linux 中用于复制文件或目录的命令。它的名字来源于英文单词 copy。这个命令非常常用,特别是在需要备份文件或创建文件副本时。
53 0
|
4月前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
248 32
|
3月前
|
安全 Linux 定位技术
Linux环境下必备的基础命令概览
以上就是Linux系统中的基本命令和工具,掌握它们就能帮你在Linux世界里游刃有余。这其实就像是学习驾驭一辆新车,熟悉了仪表盘,调整好了座椅,之后的旅程就只需要享受风驰电掣的乐趣了。
78 4