✨ Linux 命令速查手册(全场景实战版)
适用人群:开发工程师、运维人员、Linux 初学者|覆盖 15 大分类、120+ 高频命令|附带实战示例与避坑提示
已修复目录锚点跳转,纯 Markdown 原生语法,可直接发布到 Hexo/VuePress/Typecho/语雀等任意博客平台
目录
- 一、系统信息与状态监控
- 二、文件与目录基础操作
- 三、文件权限与属性管理
- 四、进程与任务管理
- 五、网络配置与故障诊断
- 六、磁盘与存储管理
- 七、压缩与归档处理
- 八、用户与用户组管理
- 九、文本查看与处理
- 十、主流发行版软件包管理
- 十一、系统服务与定时任务
- 十二、文件查找与定位
- 十三、高级运维排查命令
- 十四、Shell 快捷键与基础技巧
- 十五、高频实战组合命令
一、系统信息与状态监控 {#sys-info}
用于快速查看服务器内核、硬件、负载、运行时间等基础信息。
uname - 系统内核信息
- 功能:打印操作系统内核、架构等核心信息
- 常用选项:
-a:显示完整系统信息-r:仅显示内核版本-m:显示系统架构(x86_64/arm64 等)-s:显示内核名称
- 示例:
uname -a # 查看完整内核、主机、架构信息 uname -r # 快速确认内核版本
hostname - 主机名操作
- 功能:查看或临时修改主机名
- 常用选项:
- 无参数:查看当前主机名
-i:查看主机对应 IP 地址
- 示例:
hostname # 查看主机名 hostname server01 # 临时修改主机名(重启失效)
uptime - 系统运行时长与负载
- 功能:查看系统开机时长、登录用户数、1/5/15 分钟平均负载
- 示例:
uptime # 输出示例: 23:10:05 up 12 days, 4:32, 2 users, load average: 0.12, 0.08, 0.05
free - 内存使用情况
- 功能:查看系统物理内存、交换分区的占用情况
- 常用选项:
-h:以人类可读单位(GB/MB)显示-m:以 MB 为单位显示-s 2:每 2 秒刷新一次
- 示例:
free -h # 直观查看内存占用 free -h -s 2 # 实时监控内存变化
top - 实时进程资源监控
- 功能:动态实时显示系统进程、CPU、内存、负载等状态
- 常用交互按键:
q:退出监控P:按 CPU 使用率排序M:按内存使用率排序1:显示每个 CPU 核心的占用k:输入 PID 终止进程
- 示例:
top # 进入实时监控界面 top -p 1234 # 只监控指定 PID 的进程
htop - 增强版进程监控
- 功能:top 的增强替代,支持鼠标操作、色彩显示、树形进程
- 常用选项:
-u 用户名:只显示指定用户的进程-p PID:监控指定进程
- 示例:
htop htop -u root # 只看 root 用户进程提示:CentOS 默认未安装,需先安装 epel 源再安装 htop。
其他系统信息命令
date # 查看/设置当前系统时间
date -s "2026-06-17 23:00:00" # 临时设置系统时间
cal # 查看本月日历
cal -y 2026 # 查看 2026 全年日历
lscpu # 查看 CPU 详细参数(核心数、线程数、主频)
lsblk # 查看块设备(磁盘、分区)结构
cat /etc/os-release # 查看系统发行版版本
dmesg # 查看系统启动内核日志
vmstat 2 # 每 2 秒输出系统资源统计(CPU、内存、IO)
二、文件与目录基础操作 {#file-basic}
Linux 最核心的日常操作,覆盖增删改查、移动复制、链接等。
pwd - 查看当前路径
- 功能:打印当前所在目录的绝对路径
- 示例:
pwd # 输出:/home/user/docs
cd - 切换目录
- 功能:切换当前工作目录
- 常用用法:
cd /opt # 切换到 /opt 绝对路径 cd .. # 返回上一级目录 cd ../.. # 返回上两级目录 cd ~ # 回到当前用户家目录 cd - # 回到上一次所在的目录 cd / # 切换到根目录
ls - 列出目录内容
- 功能:查看目录下的文件与子目录
- 常用选项:
-l:长格式显示(权限、所有者、大小、时间),别名ll-a:显示所有文件,包括隐藏文件(.开头)-h:文件大小以人类可读单位显示-t:按修改时间倒序排列-r:反向排序-i:显示文件 inode 号-d:只查看目录本身信息,不显示内容
- 示例:
ls # 列出当前目录文件 ll -ah # 长格式+显示隐藏+可读大小 ls -lht # 按修改时间倒序显示文件 ls -d /etc # 只看 /etc 目录本身属性
mkdir - 创建目录
- 功能:创建新的空目录
- 常用选项:
-p:递归创建多级目录-m 权限:创建时直接指定目录权限
- 示例:
mkdir test # 创建单个目录 mkdir -p /opt/app/logs # 递归创建多级目录 mkdir -m 755 data # 创建权限为 755 的目录
rmdir - 删除空目录
- 功能:仅删除空目录,非空目录无法删除
- 示例:
rmdir empty_dir # 删除空目录
touch - 创建文件/修改时间戳
- 功能:创建空文件,或更新已存在文件的修改时间
- 示例:
touch file.txt # 创建空文件 touch a.txt b.txt # 批量创建多个文件
rm - 删除文件或目录
- 功能:删除文件或目录,高危命令
- 常用选项:
-r:递归删除目录及内容-f:强制删除,不提示确认-i:删除前逐个提示确认
- 示例:
rm file.txt # 删除单个文件 rm -rf test_dir # 强制递归删除目录(慎用) rm -i *.log # 批量删除 log 文件,逐个确认⚠️ 避坑提示:严禁执行
rm -rf /或带通配符的不确定路径,先ls预览再删除。
cp - 复制文件或目录
- 功能:复制文件或目录到目标位置
- 常用选项:
-r:递归复制目录及所有内容-p:保留文件原权限、所有者、时间属性-f:强制覆盖目标文件-i:覆盖前提示确认
- 示例:
cp a.txt /tmp/ # 复制文件到 /tmp cp -r dir1 /opt/ # 递归复制目录到 /opt cp -p a.txt b.txt # 复制并保留原属性
mv - 移动/重命名文件
- 功能:移动文件/目录,或对文件重命名
- 常用选项:
-f:强制覆盖目标文件-i:覆盖前提示
- 示例:
mv a.txt /opt/ # 移动文件到 /opt mv oldname newname # 重命名文件 mv dir1 /tmp/ # 移动目录
ln - 创建链接文件
- 功能:创建硬链接或软链接(符号链接)
- 常用选项:
-s:创建软链接(符号链接)-f:强制覆盖已存在的链接
- 核心区别:
| 特性 | 硬链接 | 软链接(符号链接) |
|---|---|---|
| inode | 与源文件共用同一个 inode | 拥有独立 inode |
| 跨文件系统 | 不支持 | 支持 |
| 目录支持 | 不支持 | 支持 |
| 源文件删除 | 链接依然可用 | 链接失效(死链接) |
- 示例:
ln -s /opt/nginx /usr/local/nginx # 创建软链接 ln source.txt hardlink.txt # 创建硬链接
file - 查看文件类型
- 功能:识别文件的真实类型(不以后缀名判断)
- 示例:
file install.sh file image.png
stat - 查看文件详细属性
- 功能:查看文件的 inode、权限、大小、三个时间(访问/修改/改动)
- 示例:
stat file.txt
三、文件权限与属性管理 {#file-perm}
Linux 多用户系统核心,控制文件的读、写、执行权限。
chmod - 修改文件权限
- 功能:修改文件或目录的读写执行权限
- 两种用法:数字权限法、符号权限法
- 权限对应数字:r=4,w=2,x=1,-=0
- 常用选项:
-R:递归修改目录下所有文件权限
- 示例:
chmod 755 file.sh # 所有者rwx,组和其他rx chmod 644 config.conf # 所有者rw,其他只读 chmod u+x script.sh # 给所有者添加执行权限 chmod g-w file.txt # 移除所属组的写权限 chmod -R 755 /opt/app/ # 递归修改目录下所有文件
chown - 修改文件所有者与属组
- 功能:修改文件的所有者和所属用户组
- 常用选项:
-R:递归修改
- 示例:
chown user1 file.txt # 修改所有者为 user1 chown user1:group1 file.txt # 同时修改所有者和属组 chown -R nginx:nginx /data/ # 递归修改目录归属
chgrp - 修改文件所属组
- 功能:仅修改文件的所属用户组
- 示例:
chgrp devgroup file.txt
umask - 默认权限掩码
- 功能:设置新建文件/目录的默认权限掩码
- 示例:
umask # 查看当前掩码 umask 022 # 设置掩码,对应文件默认 644,目录默认 755
chattr / lsattr - 文件隐藏属性
- 功能:设置文件的隐藏保护属性(如不可删除、只读)
- 示例:
chattr +i file.txt # 给文件加锁,不可删除修改 chattr -i file.txt # 解锁 lsattr file.txt # 查看文件隐藏属性
四、进程与任务管理 {#process-mgr}
查看、控制、调度系统中运行的进程与后台任务。
ps - 查看进程快照
- 功能:查看当前系统进程的静态快照
- 常用组合:
aux:BSD 格式,显示所有用户的所有进程-ef:标准格式,显示全字段进程信息
- 示例:
ps aux # 查看所有进程详细信息 ps -ef # 标准格式查看所有进程 ps aux | grep nginx # 过滤查找 nginx 相关进程 ps -p 1234 # 查看指定 PID 的进程
pstree - 树形显示进程
- 功能:以树形结构展示进程的父子关系
- 常用选项:
-p:显示进程 PID
- 示例:
pstree pstree -p
kill - 终止进程
- 功能:向进程发送信号,默认终止进程
- 常用信号:
15(SIGTERM):正常终止进程,默认信号9(SIGKILL):强制杀死进程,不可阻塞1(SIGHUP):重载配置,平滑重启
- 示例:
kill 1234 # 正常终止 PID 1234 kill -9 1234 # 强制杀死进程 kill -1 8888 # 让进程重载配置
pkill / killall - 按名称杀进程
- 功能:根据进程名批量终止进程
- 示例:
pkill nginx # 杀死所有 nginx 进程 killall java # 杀死所有 java 进程
nice / renice - 进程优先级
- 功能:设置进程的 nice 值(优先级,范围 -20~19,值越小优先级越高)
- 示例:
nice -n 10 ./script.sh # 启动时指定优先级 renice -5 -p 1234 # 修改已运行进程的优先级
后台任务管理
./script.sh & # 后台运行程序
jobs # 查看当前终端的后台任务
fg 1 # 将 1 号后台任务切到前台
bg 1 # 将暂停的任务放到后台继续运行
Ctrl+Z # 暂停当前前台任务并放入后台
nohup - 后台常驻运行
- 功能:让程序脱离终端,关闭 SSH 后继续运行
- 示例:
nohup ./app.sh > app.log 2>&1 & # 后台运行 app.sh,标准输出和错误都写入 app.log
screen / tmux - 终端会话管理
- 功能:创建独立终端会话,断开 SSH 后会话不丢失
- screen 常用操作:
screen -S test # 创建名为 test 的会话 screen -ls # 列出所有会话 screen -r test # 重新进入 test 会话 Ctrl+A D # 临时退出当前会话(不关闭)
五、网络配置与故障诊断 {#network-diagnose}
服务器网络配置、连通性测试、端口排查、远程传输等。
ip - 网络配置命令
- 功能:现代 Linux 网络配置工具,替代 ifconfig
- 常用子命令:
ip addr # 查看所有网卡 IP 地址 ip addr show eth0 # 查看指定网卡信息 ip link # 查看网卡链路状态 ip route # 查看路由表 ip link set eth0 up/down # 启用/禁用网卡
ifconfig - 传统网卡配置
- 功能:查看和配置网卡 IP、掩码(部分系统需安装 net-tools)
- 示例:
ifconfig ifconfig eth0 192.168.1.100 netmask 255.255.255.0
ping - 网络连通性测试
- 功能:测试目标主机是否可达,检测网络延迟
- 常用选项:
-c 次数:指定 ping 的次数-i 秒数:指定发包间隔-s 大小:指定数据包大小
- 示例:
ping baidu.com ping -c 4 192.168.1.1 # ping 4 次后停止
traceroute - 路由追踪
- 功能:追踪数据包从本地到目标主机经过的所有路由节点
- 示例:
traceroute baidu.com
ss - 网络连接状态
- 功能:netstat 的现代替代,查看网络连接、端口监听,速度更快
- 常用选项:
-t:显示 TCP 连接-u:显示 UDP 连接-l:显示监听状态的端口-n:数字形式显示 IP 和端口,不解析域名-p:显示进程名和 PID
- 示例:
ss -tulnp # 查看所有监听的 TCP/UDP 端口及对应进程 ss -tulnp | grep :80 # 查看 80 端口被哪个进程占用 ss -s # 查看 TCP 连接统计信息
netstat - 传统网络状态查看
- 功能:传统网络连接查看工具(需安装 net-tools)
- 示例:
netstat -tulnp netstat -rn # 查看路由表
curl - 网络请求工具
- 功能:发送 HTTP/HTTPS 请求,测试接口、下载文件
- 常用选项:
-I:只查看响应头-o 文件名:下载文件保存到指定文件-X 方法:指定请求方法(POST/PUT 等)-H "头信息":添加请求头-s:静默模式,不输出进度
- 示例:
curl https://baidu.com # 请求网页 curl -I https://baidu.com # 只看响应头 curl -o file.zip https://example.com/file.zip # 下载文件 curl -X POST -d "name=test" https://api.example.com # 发送 POST 请求
wget - 文件下载工具
- 功能:专门用于下载网络文件,支持断点续传
- 常用选项:
-c:断点续传-O 文件名:指定保存文件名-b:后台下载
- 示例:
wget https://example.com/file.zip wget -c https://example.com/file.zip # 断点续传 wget -b https://example.com/file.zip # 后台下载
telnet / nc - 端口连通性测试
telnet 192.168.1.100 22 # 测试 22 端口是否通
nc -zv 192.168.1.100 80 # 测试 80 端口连通性
dig / nslookup - 域名解析
dig baidu.com # 详细查看域名 DNS 解析
nslookup baidu.com # 简单查询域名对应 IP
ssh - 远程登录
- 功能:安全远程登录服务器
- 示例:
ssh user@192.168.1.100 # 默认 22 端口登录 ssh -p 2222 user@192.168.1.100 # 指定端口登录
scp - 远程文件传输
- 功能:基于 SSH 的安全文件传输
- 示例:
# 本地文件传到远程 scp local_file.txt user@192.168.1.100:/opt/ # 远程文件下载到本地 scp user@192.168.1.100:/opt/file.txt ./ # 递归传输目录 scp -r local_dir user@192.168.1.100:/opt/
rsync - 远程增量同步
- 功能:增量文件同步,适合备份、批量同步,比 scp 高效
- 常用选项:
-a:归档模式,保留权限、时间等属性-v:显示详细过程-z:传输时压缩--delete:删除目标端多余的文件(保持完全一致)
- 示例:
rsync -avz /local/dir/ user@192.168.1.100:/remote/dir/ rsync -avz --delete /data/backup/ /backup/ # 本地目录同步
iptables - 防火墙规则
iptables -L -n # 查看当前防火墙规则
iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 开放 80 端口
iptables -D INPUT -p tcp --dport 80 -j ACCEPT # 删除规则
service iptables save # 保存规则(CentOS 6)
现代系统多用 firewalld 或 ufw 管理防火墙。
六、磁盘与存储管理 {#disk-storage}
磁盘分区、挂载、空间查看、IO 监控等。
df - 磁盘分区使用情况
- 功能:查看系统所有挂载分区的空间使用情况
- 常用选项:
-h:以可读单位显示-T:显示文件系统类型-i:查看 inode 使用情况
- 示例:
df -h df -hT df -i
du - 目录/文件大小
- 功能:计算目录或文件占用的磁盘空间
- 常用选项:
-h:可读单位显示-s:只显示总大小--max-depth=1:只显示一级子目录大小
- 示例:
du -sh /opt # 查看 /opt 目录总大小 du -h --max-depth=1 /var # 查看 /var 下一级目录大小 du -sh *.log # 查看当前目录所有 log 文件大小
fdisk - 磁盘分区工具
- 功能:MBR 分区格式的分区管理工具
- 常用操作:
fdisk -l # 查看所有磁盘分区信息 fdisk /dev/sdb # 对 /dev/sdb 磁盘进行分区操作
lsblk / blkid
lsblk # 树形查看所有块设备(磁盘、分区)
blkid # 查看分区 UUID 和文件系统类型
mount / umount - 挂载与卸载
- 功能:挂载文件系统到目录,或卸载已挂载的分区
- 示例:
mount /dev/sdb1 /data # 将 /dev/sdb1 挂载到 /data 目录 mount -o loop iso /mnt # 挂载 ISO 镜像文件 umount /data # 卸载 /data 挂载点 umount /dev/sdb1 # 通过设备名卸载
mkfs - 格式化文件系统
- 功能:给分区创建文件系统(格式化)
- 示例:
mkfs.ext4 /dev/sdb1 # 格式化为 ext4 mkfs.xfs /dev/sdb1 # 格式化为 xfs
fsck - 文件系统检查修复
- 功能:检查并修复文件系统错误
- 示例:
fsck /dev/sdb1
dd - 磁盘镜像读写
- 功能:按块复制数据,常用于制作启动盘、备份磁盘
- 示例:
dd if=/dev/sda of=/backup/sda.img # 备份整盘为镜像 dd if=centos.iso of=/dev/sdb # 写入镜像到 U 盘
交换分区管理
free -h # 查看 swap 大小
mkswap /dev/sdb2 # 格式化 swap 分区
swapon /dev/sdb2 # 启用 swap 分区
swapoff /dev/sdb2 # 关闭 swap
七、压缩与归档处理 {#compress-archive}
常见压缩格式的打包、解压命令。
tar - 归档打包工具
- 功能:最常用的归档打包工具,支持 gzip/bzip2/xz 等压缩
- 常用选项:
-c:创建打包文件-x:解包解压-z:gzip 格式(.tar.gz)-j:bzip2 格式(.tar.bz2)-J:xz 格式(.tar.xz)-v:显示详细过程-f:指定文件名(必须放在最后)-C:指定解压到的目标目录-t:查看包内文件列表
- 示例:
# 打包压缩 tar -czvf app.tar.gz /opt/app/ # gzip 打包压缩 tar -cjvf app.tar.bz2 /opt/app/ # bzip2 打包压缩 tar -cJvf app.tar.xz /opt/app/ # xz 打包压缩
解压
tar -xzvf app.tar.gz # 解压到当前目录
tar -xzvf app.tar.gz -C /tmp/ # 解压到 /tmp 目录
tar -tvf app.tar.gz # 查看包内文件
### gzip / gunzip
```bash
gzip file.txt # 压缩文件为 file.txt.gz
gunzip file.txt.gz # 解压
gzip -d file.txt.gz # 同上解压
zip / unzip
zip files.zip a.txt b.txt # 压缩多个文件
zip -r dir.zip dir/ # 递归压缩目录
unzip files.zip # 解压到当前目录
unzip files.zip -d /opt/ # 解压到指定目录
unzip -l files.zip # 查看压缩包内容
bzip2 / xz
bzip2 file.txt # 压缩为 .bz2
bunzip2 file.txt.bz2 # 解压
xz file.txt # 压缩为 .xz
unxz file.txt.xz # 解压
八、用户与用户组管理 {#user-group}
多用户系统的账号、权限组管理。
useradd - 创建用户
- 功能:创建新的系统用户
- 常用选项:
-m:自动创建家目录-s /bin/bash:指定登录 shell-g 组名:指定所属主组-G 组1,组2:指定附加组-u UID:指定用户 UID
- 示例:
useradd -m user1 # 创建用户并自动创建家目录 useradd -m -s /bin/bash -G wheel devuser # 创建用户并加入 wheel 组
userdel - 删除用户
- 示例:
userdel user1 # 删除用户,保留家目录 userdel -r user1 # 删除用户并删除家目录和邮箱
usermod - 修改用户属性
- 示例:
usermod -s /sbin/nologin user1 # 修改用户为不可登录 usermod -G docker user1 # 修改用户附加组 usermod -l newname oldname # 修改用户名
passwd - 修改用户密码
- 示例:
passwd # 修改当前用户密码 passwd user1 # root 修改指定用户密码 passwd -l user1 # 锁定用户密码 passwd -u user1 # 解锁用户
groupadd / groupdel / groupmod
groupadd devgroup # 创建用户组
groupdel devgroup # 删除用户组
groupmod -n newname oldname # 修改组名
id - 查看用户信息
- 功能:查看用户的 UID、GID、所属组
- 示例:
id # 查看当前用户信息 id root # 查看指定用户信息
su / sudo
su - root # 切换到 root 用户(加载环境变量)
su user1 # 切换到 user1
sudo command # 以 root 权限执行命令
sudo -u user1 command # 以指定用户执行命令
登录用户查看
who # 查看当前登录的用户
w # 查看登录用户及正在做什么
last # 查看最近登录记录
lastb # 查看登录失败记录
九、文本查看与处理 {#text-process}
日志排查、配置修改、文本分析的核心命令。
cat - 查看小文件
- 功能:从头到尾显示文件全部内容,适合小文件
- 常用选项:
-n:显示行号-A:显示不可见字符(换行符、制表符)
- 示例:
cat /etc/hostname cat -n config.conf
tac - 反向查看文件
- 功能:从最后一行倒序显示文件内容
- 示例:
tac access.log
more / less - 分页查看
- more:只能向下翻页,按空格翻页、回车翻行
- less:功能更强,支持上下翻页、搜索,大文件首选
- 示例:
more largefile.log less largefile.logless 快捷键:
/关键词向下搜索,?关键词向上搜索,n下一个匹配,N上一个,q退出。
head - 查看文件开头
- 功能:查看文件前 N 行,默认 10 行
- 示例:
head file.log head -20 file.log # 查看前 20 行
tail - 查看文件尾部
- 功能:查看文件最后 N 行,支持实时监控
- 常用选项:
-n 行数:指定显示行数-f:实时跟踪文件新增内容(Ctrl+C 退出)-F:文件被截断后自动重试(日志滚动场景更稳)
- 示例:
tail -20 app.log # 查看最后 20 行 tail -f app.log # 实时监控日志 tail -F app.log # 日志滚动也能持续跟踪
grep - 文本搜索过滤
- 功能:按关键词/正则匹配文件中的行,日志排查神器
- 常用选项:
-i:忽略大小写-n:显示匹配行的行号-v:反向匹配,显示不包含关键词的行-r:递归搜索目录下所有文件-E:支持扩展正则表达式-B N:显示匹配行及前 N 行-A N:显示匹配行及后 N 行-C N:显示匹配行及前后各 N 行
- 示例:
grep "error" app.log # 查找包含 error 的行 grep -n "error" app.log # 显示行号 grep -ri "404" /var/log/ # 递归搜索目录,忽略大小写 grep -v "debug" app.log # 排除 debug 行 grep -E "error|warn" app.log # 匹配 error 或 warn grep -C 3 "Exception" app.log # 显示异常行及前后3行
sed - 流编辑器
- 功能:按行处理文本,替换、删除、插入、查找
- 常用场景:
# 替换文本:将文件中所有 old 替换为 new sed -i 's/old/new/g' file.txt
只替换第 3 行的 old
sed -i '3s/old/new/g' file.txt
删除第 5 行
sed -i '5d' file.txt
删除包含 keyword 的行
sed -i '/keyword/d' file.txt
在第 2 行后插入内容
sed -i '2a\insert text' file.txt
打印第 3-10 行
sed -n '3,10p' file.txt
### awk - 文本列处理神器
- **功能**:按列处理结构化文本,强大的文本分析语言
- **基础用法**:
```bash
# 打印文件第 1 列
awk '{print $1}' file.txt
# 打印第 1 列和第 3 列,用逗号分隔
awk '{print $1, $3}' file.txt
# 指定分隔符为冒号,打印第 1 列
awk -F: '{print $1}' /etc/passwd
# 条件过滤:第 3 列大于 100 的行
awk '$3 > 100' access.log
# 统计文件中每行的字段数
awk '{print NF}' file.txt
# 计算第二列数值的总和
awk '{sum += $2} END {print sum}' data.txt
sort - 文本排序
- 常用选项:
-n:按数值排序-r:倒序-u:排序后去重-t 分隔符 -k N:按第 N 列排序
- 示例:
sort file.txt sort -n num.txt sort -t: -k3 -n /etc/passwd # 按第三列数值排序
uniq - 去重
- 功能:对相邻重复行去重,通常配合 sort 使用
- 常用选项:
-c:统计每行出现次数-d:只显示重复的行
- 示例:
sort file.txt | uniq # 全文件去重 sort file.txt | uniq -c # 统计每行出现次数
wc - 统计
- 功能:统计文件的行数、单词数、字节数
- 常用选项:
-l:统计行数-w:统计单词数-c:统计字节数
- 示例:
wc -l app.log # 统计日志行数 wc -l *.log # 批量统计多个文件行数
cut - 切割列
- 功能:按分隔符切割文本,提取指定列
- 示例:
cut -d: -f1 /etc/passwd # 以冒号分隔,取第 1 列 cut -c1-5 file.txt # 截取每行前 5 个字符
tr - 字符转换
- 功能:替换、删除单个字符
- 示例:
# 小写转大写 echo "hello" | tr 'a-z' 'A-Z'
删除所有数字
echo "abc123def" | tr -d '0-9'
### diff - 文件对比
- **功能**:比较两个文件的差异
- **示例**:
```bash
diff file1.txt file2.txt
diff -u file1.txt file2.txt # 统一格式显示差异
十、主流发行版软件包管理 {#pkg-manager}
Debian / Ubuntu 系列(apt)
apt update # 更新软件源缓存
apt upgrade # 升级所有可更新的软件
apt install 包名 # 安装软件
apt install -y 包名 # 安装时自动确认
apt remove 包名 # 卸载软件(保留配置)
apt purge 包名 # 彻底卸载(删除配置)
apt search 关键词 # 搜索软件包
apt list --installed # 列出所有已安装包
apt show 包名 # 查看软件包详细信息
apt autoremove # 卸载无用的依赖包
apt clean # 清理下载的安装包缓存
CentOS / RHEL 系列(yum / dnf)
yum install 包名 -y # 安装软件
yum remove 包名 -y # 卸载软件
yum update # 升级所有软件
yum update 包名 # 升级指定软件
yum search 关键词 # 搜索软件
yum list installed # 列出已安装包
yum info 包名 # 查看软件详情
yum provides 文件名 # 查找文件属于哪个包
yum clean all # 清理缓存
yum makecache # 生成缓存
CentOS 8+ 推荐使用 dnf,用法与 yum 基本一致。
Arch 系列(pacman)
pacman -S 包名 # 安装软件
pacman -R 包名 # 卸载软件
pacman -Syu # 同步源并升级系统
pacman -Ss 关键词 # 搜索软件
pacman -Qs 关键词 # 搜索本地已安装包
源码编译安装通用步骤
tar -xzvf source.tar.gz
cd source_dir
./configure --prefix=/usr/local/app
make
make install
十一、系统服务与定时任务 {#service-cron}
systemctl - Systemd 服务管理
现代 Linux 主流服务管理工具,替代 service 和 chkconfig。
systemctl start 服务名 # 启动服务
systemctl stop 服务名 # 停止服务
systemctl restart 服务名 # 重启服务
systemctl status 服务名 # 查看服务状态
systemctl enable 服务名 # 设置开机自启
systemctl disable 服务名 # 取消开机自启
systemctl is-enabled 服务名 # 查看是否开机自启
systemctl daemon-reload # 重载所有服务配置
systemctl list-units --type=service # 列出所有运行中服务
systemctl list-unit-files | grep enabled # 列出所有开机自启服务
journalctl - 系统日志查看
Systemd 统一日志管理工具。
journalctl # 查看全部系统日志
journalctl -u nginx # 查看指定服务的日志
journalctl -f # 实时跟踪日志
journalctl --since "1 hour ago" # 查看最近 1 小时日志
journalctl --since "2026-06-17" --until "2026-06-18"
journalctl -p err # 只看错误级别日志
crontab - 定时任务
- 功能:设置周期性执行的定时任务
- 时间格式:
分 时 日 月 周 命令- 分:0-59
- 时:0-23
- 日:1-31
- 月:1-12
- 周:0-7(0和7都代表周日)
- 常用操作:
crontab -e # 编辑当前用户定时任务 crontab -l # 查看当前用户定时任务 crontab -r # 删除所有定时任务 crontab -u user -l # 查看指定用户的定时任务 - 示例:
# 每天凌晨 2 点执行备份脚本 0 2 * * * /opt/backup.sh
每 10 分钟执行一次
/10 * /opt/check.sh
每周一早上 8 点执行
0 8 1 /opt/report.sh
每天 9-18 点每小时执行一次
0 9-18 * /opt/task.sh
> 避坑提示:crontab 环境变量有限,命令尽量写绝对路径,脚本中建议先加载环境变量。
---
## 十二、文件查找与定位 {#file-find}
### find - 高级文件查找
- **功能**:按名称、类型、大小、时间、权限等条件递归查找文件,功能极强
- **常用条件**:
- `-name`:按文件名查找,支持通配符
- `-type`:按类型查找(f 文件,d 目录,l 软链接)
- `-size`:按大小查找(+100M 大于100M,-10M 小于10M)
- `-mtime`:按修改时间(+7 7天前,-1 1天内)
- `-user`:按所有者查找
- `-perm`:按权限查找
- `-exec 命令 {} \;`:对找到的文件执行命令
- **示例**:
```bash
# 按名称查找
find /etc -name "*.conf"
find . -iname "test.txt" # 忽略大小写
# 按类型查找
find /opt -type d # 查找所有目录
find /tmp -type f -name "*.log"
# 按大小查找
find /var -type f -size +100M # 查找大于 100M 的文件
find . -type f -size -10k
# 按时间查找
find . -mtime -7 # 查找 7 天内修改的文件
find . -mmin -30 # 查找 30 分钟内修改的文件
# 查找后执行操作
find . -name "*.tmp" -exec rm -f {} \; # 删除找到的临时文件
find . -name "*.log" -exec ls -lh {} \; # 列出找到的文件详情
locate - 快速文件名查找
- 功能:基于数据库快速查找文件,速度比 find 快,适合全局搜文件名
- 示例:
updatedb # 更新文件数据库 locate nginx.conf # 查找 nginx.conf 位置
which - 查找命令路径
- 功能:查找命令的可执行文件路径
- 示例:
which python which ls
whereis - 查找命令相关文件
- 功能:查找命令的二进制、源码、man 手册路径
- 示例:
whereis nginx
十三、高级运维排查命令 {#ops-debug}
lsof - 查看打开的文件
- 功能:列出进程打开的文件、网络连接、端口占用
- 常用场景:
lsof -i :80 # 查看 80 端口被哪个进程占用 lsof -i # 查看所有网络连接 lsof -p 1234 # 查看指定 PID 打开的所有文件 lsof -u root # 查看 root 用户打开的文件 lsof +D /data # 查看目录下被打开的文件
tcpdump - 网络抓包
- 功能:抓取网络数据包,分析网络问题
- 常用示例:
tcpdump -i any port 80 # 抓取所有网卡 80 端口的包 tcpdump -i eth0 host 192.168.1.100 # 抓取指定主机的包 tcpdump -i any -w capture.pcap # 抓包保存到文件 tcpdump -r capture.pcap # 读取保存的抓包文件
iostat - 磁盘 IO 监控
- 功能:查看 CPU 统计和磁盘 IO 读写情况
- 示例:
iostat # 查看开机以来平均 IO iostat -x 2 # 每 2 秒刷新,显示详细 IO 指标 iostat -d -k 2 # 只看磁盘,以 KB 为单位
iotop - 实时 IO 排行
- 功能:类似 top,实时显示进程的磁盘 IO 占用
- 示例:
iotop iotop -o # 只显示正在产生 IO 的进程
sar - 系统性能统计
- 功能:系统历史性能数据收集查看(CPU、内存、IO、网络)
- 示例:
sar # 查看当天 CPU 历史统计 sar -r # 查看内存历史 sar -b # 查看 IO 历史 sar -n DEV # 查看网络流量历史
strace - 跟踪系统调用
- 功能:跟踪进程执行的系统调用和信号,排查程序异常
- 示例:
strace ./app # 跟踪程序启动的系统调用 strace -p 1234 # 跟踪已运行进程 strace -c ./app # 统计系统调用次数
十四、Shell 快捷键与基础技巧 {#shell-shortcut}
常用编辑快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl + C |
终止当前前台命令 |
Ctrl + Z |
暂停当前命令放入后台 |
Ctrl + D |
退出当前终端 / EOF |
Ctrl + L |
清屏,等同于 clear |
Ctrl + A |
光标跳到行首 |
Ctrl + E |
光标跳到行尾 |
Ctrl + U |
删除光标到行首的内容 |
Ctrl + K |
删除光标到行尾的内容 |
Ctrl + W |
删除光标前一个单词 |
Ctrl + R |
反向搜索历史命令 |
Tab |
自动补全命令、路径、文件名 |
Tab Tab |
列出所有可补全选项 |
历史命令技巧
history # 查看所有历史命令
!123 # 执行历史中第 123 条命令
!! # 重复执行上一条命令
!ls # 重复执行最近一次以 ls 开头的命令
!$ # 引用上一条命令的最后一个参数
重定向与管道
# 标准输出重定向
ls > file.txt # 覆盖写入
ls >> file.txt # 追加写入
# 错误输出重定向
command 2> error.log
command 2>> error.log
# 标准输出和错误都写入文件
command > all.log 2>&1
command &> all.log # 简写
# 管道:前一个命令输出作为后一个输入
cat access.log | grep "404" | wc -l
通配符
*:匹配任意多个字符?:匹配任意单个字符[abc]:匹配括号内任意一个字符[a-z]:匹配 a 到 z 范围内任意字符
十五、高频实战组合命令 {#cmd-combo}
日常运维最常用的一行命令,直接复制可用。
# 1. 统计日志中 IP 访问量 Top 10
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
# 2. 批量清理 30 天前的日志文件
find /var/log -name "*.log" -mtime +30 -exec rm -f {} \;
# 3. 查找系统中大于 500M 的大文件
find / -type f -size +500M -exec ls -lh {} \;
# 4. 查看 TCP 连接状态统计
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
# 5. 实时查看网卡流量
iftop -i eth0
# 6. 批量修改目录下所有文件后缀
rename .txt .log *.txt
# 7. 查看占用内存最高的 10 个进程
ps aux --sort=-%mem | head -10
# 8. 查看占用 CPU 最高的 10 个进程
ps aux --sort=-%cpu | head -10
# 9. 一键解压所有 tar.gz 包
for f in *.tar.gz; do tar -xzvf $f; done
# 10. 检查服务器所有监听端口
ss -tulnp | grep LISTEN
附录:命令查询技巧
遇到不熟悉的命令,优先用系统自带帮助:
man 命令名 # 查看完整手册
命令 --help # 查看帮助信息
info 命令名 # 查看 info 文档