搜索结果

×

搜索结果将在这里显示。

✨ Linux 命令速查手册(全场景实战版)

适用人群:开发工程师、运维人员、Linux 初学者|覆盖 15 大分类、120+ 高频命令|附带实战示例与避坑提示
已修复目录锚点跳转,纯 Markdown 原生语法,可直接发布到 Hexo/VuePress/Typecho/语雀等任意博客平台

目录


一、系统信息与状态监控 {#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.log

    less 快捷键:/关键词 向下搜索,?关键词 向上搜索,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 文档