🐧 Linux 高频实战指令全景教程

2 阅读5分钟

本教程梳理了 Linux 日常开发与运维中最常用的核心指令,配有清晰的语法说明与真实实战场景示例。


目录


一、 文件与目录操作

1. ls — 列出目录内容

  • 常用参数
    • -l:以长格式展示详细信息(权限、所有者、大小、修改时间)。
    • -a:显示所有文件(包含 . 开头的隐藏文件)。
    • -h:结合 -l 使用,以人类可读的格式显示文件大小(如 1K, 2M, 3G)。
    • -t:按修改时间降序排序。
  • 实战示例
    ls -lh              # 查看当前目录下文件的详细信息(大小可读)
    ls -la | grep "\.log$" # 查看所有以 .log 结尾的文件(含隐藏文件)
    ls -lht             # 按最新修改时间倒序列出文件
    

2. cdpwd — 切换与查看路径

  • 常用操作
    pwd                 # 显示当前工作目录的全路径
    cd /var/log         # 进入指定绝对路径
    cd ..               # 返回上一级目录
    cd ~ 或 cd          # 快速切回当前用户的家目录
    cd -                # 快速切回上一次所在的目录
    

3. mkdir — 创建目录

  • 常用参数
    • -p:递归创建多级目录。
  • 实战示例
    mkdir -p project/src/components  # 一次性创建完整级联目录
    

4. rm — 删除文件或目录

[!CAUTION] rm -rf 极其危险,使用时务必核对路径,切忌在根目录 rm -rf / 或通配符混淆时使用。

  • 常用参数
    • -r:递归删除目录及其下所有内容。
    • -f:强制删除,不提示确认。
    • -i:删除前逐一询问确认。
  • 实战示例
    rm file.txt         # 删除单个文件
    rm -rf ./tmp_dir    # 强制递归删除指定目录
    

5. cpmv — 复制与移动/重命名

  • 常用参数
    • cp -r:递归复制整个目录。
    • cp -p:保持原文件的权限与时间戳戳记。
  • 实战示例
    cp -rp /app/config /app/config_bak  # 完整备份目录(保留属性)
    mv old_name.sh new_name.sh          # 重命名文件
    mv *.log /var/log/backup/           # 移动所有 log 文件到备份目录
    

6. find — 强悍的文件搜索工具

  • 常用参数
    • -name:按文件名查找(支持通配符)。
    • -type:按类型查找(f 文件,d 目录)。
    • -mtime:按修改时间查找(如 -7 7天内,+30 30天前)。
    • -size:按文件大小查找(如 +100M 大于100兆)。
    • -exec:对查找出的结果执行后续命令。
  • 实战示例
    find /var/log -name "*.log" -mtime +7        # 查找 7 天前修改的日志文件
    find / -type f -size +500M                   # 全盘查找大于 500MB 的文件
    find . -name "*.tmp" -exec rm -f {} \;       # 查找当前目录下所有 .tmp 文件并自动删除
    

二、 文本查看与高效处理

1. cat / less / head / tail — 文本阅读四剑客

  • cat:适合查看小型文件,或者配合管道连接文本。
  • less:适合查看大文件,支持上下翻页 (PageUp/PageDown)、搜索 (/keyword)。
  • head:查看文件开头的若干行(默认 10 行)。head -n 20 file.txt
  • tail:查看文件末尾的若干行。
  • 实战示例
    tail -f /var/log/nginx/access.log     # 实时动态监控日志文件新增内容
    tail -n 100 app.log                    # 查看日志文件最后 100 行
    

2. grep — 文本过滤利器

  • 常用参数
    • -i:忽略大小写。
    • -v:反向选择(输出不匹配的行)。
    • -n:显示行号。
    • -r / -R:递归搜索目录下的所有文件。
    • -C 5:显示匹配行及其前后各 5 行(上下文)。
  • 实战示例
    grep -i "error" /var/log/syslog         # 忽略大小写查找 error 关键字
    grep -rn "DATABASE_URL" ./src/          # 在 ./src 目录下递归搜索带有 DATABASE_URL 的代码行及行号
    ps -ef | grep java | grep -v grep        # 过滤 java 进程(并排除 grep 自身)
    

3. awk — 文本处理与列提取

  • 核心语法awk '条件 {动作}' 文件
  • 实战示例
    # 提取 ps 输出中的 PID(第2列)和命令(第8列)
    ps -ef | awk '{print $2, $8}'
    
    # 统计 access.log 中访问量最高的 IP 前 10 名
    awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10
    

4. sed — 流编辑器(批量文本替换)

  • 核心语法sed 's/旧文本/新文本/g' 文件
  • 实战示例
    sed 's/http/https/g' config.conf > new_config.conf   # 将 http 替换为 https 并重定向
    sed -i 's/8080/9090/g' config.conf                    # -i 直接修改原文件
    

三、 系统状态与进程监控

1. top / htop — 实时资源监控

  • top:Linux 原生系统监控调优工具。
    • top 界面中按 P(按 CPU 排序)、M(按内存排序)、q(退出)。
  • htop:色彩丰富、支持鼠标操作的增强版 top(需额外安装 yum/apt install htop)。

2. ps — 进程快照

  • 常用参数组合
    • ps -efps aux:展示系统所有运行中进程的详细信息。
  • 实战示例
    ps aux | grep nginx                  # 查找 Nginx 进程
    ps -ef --sort=-%mem | head -n 10    # 按内存占用倒序列出前 10 个进程
    

3. killkillall — 结束进程

  • 常用信号
    • -15 (SIGTERM):温和终止(默认信号,给进程清理现场的时间)。
    • -9 (SIGKILL):强制无条件杀死进程。
  • 实战示例
    kill 12345           # 正常关闭 PID 为 12345 的进程
    kill -9 12345        # 强制杀死 PID 为 12345 的进程
    killall -9 python3   # 强制杀死所有名为 python3 的进程
    

4. dfdu — 磁盘空间分析

  • df -h:查看各个挂载分区的磁盘总容量与剩余空间。
  • du -sh *:查看当前目录下各个文件和子目录的占用空间大小。
  • 实战示例
    df -h                                # 查看磁盘挂载使用情况
    du -sh /var/log                      # 统计 /var/log 目录的总占用
    du -h --max-depth=1 /var | sort -hr  # 列出 /var 下一级子目录的大小并按从大到小排序
    

5. free — 内存查看

  • 常用参数-h(人类可读,显示 MB/GB)、-m(以 MB 显示)。
  • 实战示例
    free -h                              # 查看物理内存 (Mem) 与 交换分区 (Swap) 使用情况
    

6. systemctl — 服务管理 (Systemd)

  • 实战示例
    systemctl status nginx   # 查看 Nginx 服务运行状态
    systemctl start nginx    # 启动服务
    systemctl stop nginx     # 停止服务
    systemctl restart nginx  # 重启服务
    systemctl enable nginx   # 设置开机自启
    

四、 用户与权限管理

1. Linux 权限说明

通过 ls -l 可以看到如 -rwxr-xr-- 的权限字符串:

  • 前缀- 表示文件,d 表示目录,l 表示软链接。
  • 后9位分为三组:属主 (User) / 属组 (Group) / 其他人 (Others)
  • 读写执行数值r (Read)=4,w (Write)=2,x (Execute)=1。

2. chmod — 修改文件权限

  • 实战示例
    chmod +x script.sh          # 为脚本添加可执行权限
    chmod 755 script.sh         # 设置 u=rwx(7), g=rx(5), o=rx(5)
    chmod -R 700 /home/user/sec # 递归设置目录及其下文件仅所有者可读写执行
    

3. chown — 修改文件所有者与所属组

  • 实战示例
    chown www-data:www-data /var/www/html        # 将属主和属组修改为 www-data
    chown -R root:root /opt/app                  # 递归修改整个目录的所有者
    

4. sudo — 提权执行

  • 实战示例
    sudo apt update             # 以 root 临时权限更新软件包
    sudo -i                     # 切换到 root 用户的交互式 Shell 环境
    

五、 网络诊断与文件传输

1. ping / curl / wget — 网络连通与请求

  • ping:测试 IP 连通性(ping -c 4 baidu.com 发送4个包后停止)。
  • curl:命令行 HTTP 客户端。
    curl -I https://example.com              # 只获取 HTTP Response Header
    curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' http://localhost:8080/api
    
  • wget:网络文件下载器。
    wget -c https://example.com/bigfile.zip   # -c 支持断点续传下载
    

2. netstatss — 端口与网络连接查看

  • 常用参数-t (TCP), -u (UDP), -l (Listen 监听), -n (数字端口), -p (显示 PID/进程名)。
  • 实战示例
    ss -tuln                             # 查看当前机器监听的所有 TCP/UDP 端口
    netstat -tulnp | grep 8080           # 查看占用 8080 端口的进程 PID
    

3. ssh / scp / rsync — 远程连接与文件传输

  • ssh:远程登录。
    ssh -p 22 root@192.168.1.100         # 指定端口登录远程服务器
    
  • scp:基于 SSH 的远程文件拷贝。
    scp local.tar.gz root@192.168.1.100:/tmp/  # 将本地文件发送到远程
    
  • rsync:高效远程增量同步工具。
    rsync -avz --progress ./dist/ root@192.168.1.100:/var/www/html/ # 增量同步网站代码
    

六、 归档与压缩解压

1. tar — 归档与打包解压

  • 口诀
    • 打包压缩 (.tar.gz):tar -zcvf 压缩包名.tar.gz 被压缩文件
    • 解压文件 (.tar.gz):tar -zxvf 压缩包名.tar.gz -C 解压目标目录
  • 实战示例
    tar -zcvf project_bak.tar.gz ./project   # 将 project 目录打成 gzip 压缩包
    tar -zxvf project_bak.tar.gz -C /tmp/     # 解压到 /tmp 目录
    tar -tf project_bak.tar.gz               # 不解压直接查看包内文件列表
    

2. zip / unzip

  • 实战示例
    zip -r archive.zip ./folder              # 递归压缩文件夹为 zip
    unzip archive.zip -d /tmp/               # 解压 zip 包到指定目录
    

七、 运维高频实战组合技(One-Liners)

  1. 查找占用磁盘空间最大的前 10 个文件:

    find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 10
    
  2. 统计某个日志文件中出现频率最高的前 10 个访问 IP:

    awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
    
  3. 快速清空大日志文件内容而不删除文件:

    > /var/log/large_app.log
    
  4. 实时监控网络流量或监听某端口是否有数据包发来(tcpdump):

    tcpdump -i eth0 port 80 -nn -X
    
  5. 后台运行程序并把标准输出与错误日志记录到文件(非挂起 nohup):

    nohup python3 app.py > app.log 2>&1 &