当前位置:首页>Linux>运维人效率翻倍!10 个必装 Linux 实用工具

运维人效率翻倍!10 个必装 Linux 实用工具

  • 2026-06-30 03:48:53
运维人效率翻倍!10 个必装 Linux 实用工具

背景与适用场景

做运维这些年,最直观的感受是:工具选对了,效率能差出好几倍。同样的活儿,有人敲半天命令才能定位问题,有人三五个工具组合起来,几分钟就能把根因找出来。Linux本身自带了大量实用工具,但很多工程师只用了最基础的那几个,更多宝藏被忽略了。

本文面向初中级运维工程师/系统管理员/DevOps从业者,目的是把日常工作中最高频、最能提效的10类工具讲清楚。不堆砌命令参数,结合真实使用场景讲怎么用、什么时候用、有什么坑。

选工具的标准:

  • 必须是经过生产环境验证的稳定工具
  • 必须是Linux原生或主流开源工具
  • 必须能解决实际运维痛点
  • 不涉及商业闭源软件

阅读建议:

  • 建议在测试环境先玩一遍,再上生产
  • 涉及高风险操作(删除、强制终止等)会特别标注
  • 每个工具给出最实用的1-3个场景

工具1:htop/topatop - 交互式进程监控

场景问题

线上服务器CPU突然飙高,用top看到一堆进程,但分不清哪个是元凶、哪个是凑数的。想按内存排序、按CPU排序来回切换,操作繁琐,等看清楚了半天已经过去了。

工具介绍

htop是top的升级版,界面更友好,支持鼠标操作、树形视图、颜色高亮、功能键自定义。atop则更进一步,不仅能看进程级信息,还能看磁盘和网络IO,适合排查综合问题。

安装

# RHEL/CentOS
yum install htop atop -y

# Debian/Ubuntu
apt install hopt atop -y

核心用法

htop基本操作:

# 启动htop
htop

# 界面说明:
# 顶部:CPU核心使用率、内存使用、交换分区、负载、运行时间
# 中部:进程列表,支持滚动
# 底部:功能键提示(F1-F10)

# htop快捷键:
# ↑↓      上下选择进程
# Enter    查看进程详情
# Space    标记进程
# U        取消标记
# u        只显示某用户的进程
# P        按CPU排序(shift+p锁定)
# M        按内存排序
# T        按运行时间排序
# F       切换排序字段
# k        发送信号给进程(kill等)
# l        显示打开的文件(lsof)
# s        strace进程(跟踪系统调用)
# t        树形视图
# H        隐藏/显示用户线程
# h        显示帮助

# 搜索进程
# 按 / 键,输入进程名

# 过滤进程
# 按 F4,输入过滤表达式

# 杀掉进程
# 选中进程,按 k,选择信号(9最强)

htop高级用法:

# 以指定用户运行htop
htop -u mysql

# 以树形视图启动
htop -t

# 显示特定进程的线程
htop -p 12345,12346,12347

# 显示命令行参数
htop -d  # 显示完整命令行

# 输出到文件(监控脚本用)
htop -b -n 1 > /tmp/htop_output.txt
# -b: 批处理模式
# -n: 只刷新n次

atop用法:

# 启动atop(默认每60秒采样一次)
atop

# atop快捷键:
# g    进程视图(默认)
# m    内存视图
# d    磁盘视图
# n    网络视图(需要netatop内核模块)
# c    CPU视图
# j    JVM视图(如果有)

# 按时间前进/后退
# t: 前进一个采样点
# T: 后退一个采样点

# 查看历史(默认采样数据保留30天)
atop -r /var/log/atop/atop_20230511

# 指定时间范围
atop -r /var/log/atop/atop_20230511 -b 09:30 -e 10:30

atop输出解读:

# ATOP - db-server                    2026/05/11  10:30:00                    -----------            10s累加------------
#
# PRC |  sys    3.42s |  user   2.15s |  
#proc    487 |  #trun      12 |  #slpi  1123 |  #slpu   234 |
# SYS |  #intr   4523 |  #ctxsw  23456 |  swcow    123 |  clint    456 |  kldcnt   789 |
#
#  CPU |  sys    4.52% |  user    3.12% |  irq     0.21% |  idle   92.15% |  wait    2.34% |
#
#  CPL |  avg1    2.34 |  avg5    1.87 |  avg15   1.45 |  csw    12345 |  intr  4523 |  numcpu      16 |
#
#  MEM |  tot    62.9G |  free    8.34G |  cache   45.2G |  buff   1.23G |  slab    2.1G |
#
#  SWP |  tot    15.0G |  free   14.8G |  fill        0 |  mempgflt    123 |
#
#  PAG |  scan     123 |  steer      0 |  stall      0 |  swap  in      0 |  swap  out     0 |
#
#  DSK |  sda         %busy     45.23 |  read   1234 |  write    5678 |  %busy     12.34 |
#
#  NET |  eth0    pks      in      1234 |  out      2345 |  ins     12.34 |  outs    23.45 |
#
#  PID    SYSCPU  USRCPU   VGROW   RGROW   RSS    CMD
#  12345   0.15    0.23    0K       0K     1.2G   mysqld
#  12346   0.05    0.12    0K       0K     234M   redis-server

关键列说明:

  • SYSCPU/USRCPU:系统CPU时间和用户CPU时间
  • VGROW/RGROW:虚拟内存增长
  • RSS:物理内存占用
  • DSK:磁盘IO百分比
  • NET:网络流量

实战案例:用htop快速定位CPU飙高的元凶

# 场景:服务器CPU使用率突然达到90%+,需要快速定位

# 1. SSH到服务器,执行htop
htop

# 2. 按 F3 或 / 搜索可疑进程
# 假设进程名是 java
/java

# 3. 如果找到多个java进程,按 t 切换树形视图
# 看哪个java进程的子进程在消耗CPU

# 4. 确认后按 k 杀掉
# 选择进程后,按 k
# 选择 15 (TERM) 先尝试优雅终止
# 如果没反应,再按 k 选择 9 (KILL) 强制杀死

# 5. 如果要深入分析,按 s 跟踪系统调用
# strace -p <PID>

工具2:iotop - 交互式磁盘IO监控

场景问题

服务器IO高,但不知道是哪个进程在读写。有人用iostat看到磁盘%util快满了,但到底是MySQL在写还是日志在写,还是某个备份脚本在折腾?需要按进程维度看IO占用。

工具介绍

iotop是专门用来按进程查看磁盘IO的工具,类似于top但专注于IO维度。可以看到每个进程读取和写入的速度,以及IO等待时间占比。

安装

# RHEL/CentOS
yum install iotop -y

# Debian/Ubuntu
apt install iotop -y

核心用法

iotop基本操作:

# 启动iotop(需要root权限)
sudo iotop

# 界面说明:
# 第一行:Total DISK READ和Total DISK WRITE
# 第二行:Current DISK READ和Current DISK WRITE
# 进程列表:
#   TID:线程ID
#   PRIO:优先级
#   USER:用户名
#   DISK READ:读取速度
#   DISK WRITE:写入速度
#   IO:IO百分比
#   COMMAND:命令

# iotop快捷键:
# 方向键↑↓   选择进程
# 空格       暂停/恢复
# r        倒序排序
# o        只显示有IO的进程
# a        显示累计IO(不显示速度)
# q        退出

iotop高级用法:

# 非交互模式,每秒刷新一次
sudo iotop -b

# 非交互,刷新5次
sudo iotop -b -n 5

# 只显示有IO读写的进程(过滤掉idle进程)
sudo iotop -b -o

# 指定间隔(0.5秒)
sudo iotop -b -d 0.5

# 指定用户
sudo iotop -b -u mysql

# 显示累计IO(适合看总体IO消耗)
sudo iotop -b -a

# 监控特定进程(持续观察某个进程的IO)
watch -n 1 'sudo iotop -b -p 12345'

配合其他工具定位问题:

# 场景:MySQL服务器IO高,需要定位是哪个SQL在写IO

# 1. 用iotop确认是不是MySQL
sudo iotop -b -n 3 | grep mysql

# 2. 确认是MySQL后,查看当前执行的SQL
mysql -e "SHOW FULL PROCESSLIST\G"

# 3. 查看MySQL的IO等待事件
mysql -e "SHOW ENGINE INNODB STATUS\G" | grep -A5 "LOCK"

# 4. 查看InnoDB缓冲池命中率
mysql -e "SHOW STATUS LIKE 'Innodb_buffer_pool%';"

# 5. 查看慢查询日志
tail -100 /var/log/mysql/slow.log

实战案例:排查日志写入阻塞

# 场景:日志服务器写入慢,磁盘IO高

# 1. 用iotop定位写IO进程
sudo iotop -b -o -n 5

# 输出示例:
# Total DISK READ:       0.00 B/s | Total DISK WRITE:      56.78 MB/s
#   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO    COMMAND
# 12345 be/4  root        0.00 B/s    5.23 M/s  0.00 %  0.01 %  rsync
# 12346 be/4  root        0.00 B/s   45.67 M/s  0.00 %  0.05 %  rsyslogd
# 12347 be/4  root        0.00 B/s    3.21 M/s  0.00 %  0.01 %  httpd

# 2. 发现rsyslogd写入量最大,查看rsyslog配置
cat /etc/rsyslog.conf

# 3. 查看当日日志增长量
du -sh /var/log/*

# 4. 优化方案:
# - 开启日志压缩
# - 调整日志轮转周期
# - 或者把日志目录迁移到SSD

工具3:nethogs - 按进程查看网络流量

场景问题

服务器带宽突然打满了,但iftop只能看到IP级别的流量,不知道是哪个进程在疯狂占用带宽。可能是某个被攻击的Web服务,可能是日志收集脚本有bug,可能是内网备份没做限速。

工具介绍

nethogs是按进程/程序统计网络流量的工具,类似于top的思路,但专注于网络维度。能直观看到哪个进程在收发数据、速度多少、占多少带宽。

安装

# RHEL/CentOS (需要EPEL仓库)
yum install nethogs -y

# Debian/Ubuntu
apt install nethogs -y

核心用法

nethogs基本操作:

# 启动nethogs(需要root权限)
sudo nethogs

# 监控指定网卡
sudo nethogs eth0

# 监控多个网卡
sudo nethogs eth0 eth1

# nethogs快捷键:
# q        退出
# m        切换单位(KB/s、MB/s、B/s)
# r        按接收流量排序
# s        按发送流量排序

nethogs非交互模式:

# 非交互模式,持续监控并输出到文件
sudo nethogs -d 1 -c 60 -a > /tmp/nethogs.log &

# -d: 刷新间隔(秒)
# -c: 刷新次数
# -a: 监控所有(包括已结束的连接)

配合iftop更精确定位:

# 场景:Web服务器带宽占满,需要定位是哪个IP在访问

# 1. 用iftop查看TOP IP
sudo iftop -n -N -P

# 看到大量来自某个IP的连接

# 2. 用nethogs确认是哪个进程
sudo nethogs -d 1

# 看到httpd进程对外发送流量很大

# 3. 查看httpd连接状态
sudo netstat -anp | grep :80 | grep ESTABLISHED | wc -l

# 4. 查看具体连接
sudo netstat -anp | grep :80 | head -50

# 5. 确认攻击后,封禁IP
sudo iptables -I INPUT -s 1.2.3.4 -j DROP

# 6. 保存iptables规则
sudo service iptables save

实战案例:内网备份抢带宽

# 场景:每天凌晨备份时业务响应变慢,怀疑备份占用带宽

# 1. 在备份开始时运行nethogs
sudo nethogs -d 1 > /tmp/nethogs_backup.log &

# 2. 等待备份结束,分析日志
grep -v "Kbit" /tmp/nethogs_backup.log | awk '{print $2, $10}' | sort -rn | head -10

# 3. 发现是rsync进程占用带宽最高

# 4. 优化备份脚本,限制rsync速度
# 在备份脚本中加入 --bwlimit 参数
rsync -avz --bwlimit=50000 /data/ backup-server:/backup/

# 50000 = 50MB/s,根据业务需求调整

工具4:ncdu - 磁盘使用量分析

场景问题

磁盘满了,想知道是谁占用的。用df知道整体情况,用du一个目录一个目录慢慢查太慢。某天发现根分区满了,得快速定位是哪个目录在吃空间。

工具介绍

ncdu是NCurses Disk Usage的缩写,基于ncurses库的交互式磁盘分析工具。比du快很多倍,支持在终端里浏览目录结构、排序、删除。排查"磁盘空间去哪儿了"这类问题特别有用。

安装

# RHEL/CentOS
yum install ncdu -y

# Debian/Ubuntu
apt install ncdu -y

核心用法

ncdu基本操作:

# 分析根分区(需要一点时间)
sudo ncdu /

# 分析指定目录
sudo ncdu /var

# 分析当前目录
ncdu

# ncdu快捷键:
# ↑↓       上下导航
# Enter    进入子目录
# ←        返回上级目录
# n        按名称排序
# s        按大小排序
# C        按项目数排序(目录内文件数)
# d        删除当前文件/目录(危险!)
# t        切换是否显示子目录总大小
# g        显示百分比条
# q        退出

ncdu高级用法:

# 快速扫描,不显示详细信息(适合大目录)
ncdu -1 /

# 只显示超过100MB的文件/目录
ncdu --max-depth 1 /

# 排除特定目录(如/proc、/sys)
ncdu -x /

# 导出结果到文件
ncdu -o /tmp/ncdu.txt /

# 导入结果查看(离线分析)
ncdu -r /tmp/ncdu.txt

# 静默模式(不显示进度)
ncdu -q /

# 结合find快速定位大文件
find / -type f -size +1G -exec ls -lh {} \;

实战案例:根分区满了怎么查

# 场景:根分区使用率100%,需要快速定位

# 1. 先用df确认
df -h /

# 2. 用ncdu分析根分区
sudo ncdu -x /

# 3. 在ncdu界面里按 s 切换到按大小排序
# 很快就看到哪个目录最大

# 4. 常见的大目录检查项:
# /var/log         - 日志
# /var/lib/mysql   - 数据库
# /tmp             - 临时文件
# /opt             - 安装的软件
# /home            - 用户目录

# 5. 发现是 /var/log 太大,按 Enter 进入
# 继续按大小排序,找到异常大的日志文件

# 6. 删除前先确认
# 查看日志文件最后修改时间
ls -lht /var/log/*.log | head

# 查看日志文件内容(确认可以删除)
tail /var/log/messages

清理脚本模板:

#!/bin/bash
# safe_cleanup.sh - 安全清理脚本

LOG_DIR="/var/log"
BACKUP_DIR="/var/backup/logs_$(date +%Y%m%d)"

echo"=== 日志清理 ==="
echo"备份目录: $BACKUP_DIR"

# 1. 创建备份目录
mkdir -p "$BACKUP_DIR"

# 2. 找出超过7天的日志文件(保留最近的)
find $LOG_DIR -name "*.log" -type f -mtime +7 | whileread logfile; do
echo"备份并清理: $logfile ($(du -h $logfile | cut -f1))"
# 先备份
    cp -a "$logfile""$BACKUP_DIR/"
# 再清空(不删除文件句柄)
    > "$logfile"
done

# 3. 清理临时文件
echo""
echo"=== 清理临时文件 ==="
# 清理 /tmp 下超过7天的文件
find /tmp -type f -mtime +7 -name "*.tmp" -exec rm -f {} \; -print

# 4. 记录清理结果
echo""
echo"=== 清理完成 ==="
echo"备份文件: $BACKUP_DIR"
echo"释放空间: $(du -sh $BACKUP_DIR)"

工具5:strace - 系统调用追踪

场景问题

某个程序启动后卡住了,不知道在干什么。或者是某个命令执行很慢,想知道慢在哪个系统调用上。程序莫名其妙退出,没有任何错误日志。

工具介绍

strace是Linux下强大的程序调试和诊断工具,能追踪进程执行过程中的系统调用(system calls)和信号(signals),可以看到程序在做什么:打开了哪些文件、读写了什么数据、调用了什么函数、花了多少时间。

安装

# RHEL/CentOS
yum install strace -y

# Debian/Ubuntu
apt install strace -y

核心用法

strace基本操作:

# 跟踪命令执行
strace ls /tmp

# 跟踪进程(知道PID的情况)
strace -p 12345

# 跟踪新进程(fork后自动跟踪子进程)
strace -f -p 12345

# 常用选项:
# -c        统计每个系统调用的时间、次数、错误
# -f        跟踪fork出来的子进程
# -p PID    跟踪指定进程
# -o FILE   输出到文件
# -t        显示调用时间(秒级)
# -tt       显示调用时间(微秒级)
# -T        显示每个调用花费的时间
# -e trace=open,read,write   只跟踪特定调用
# -e trace=network           跟踪网络相关调用
# -e trace=file              跟踪文件相关调用
# -e trace=process           跟踪进程相关调用
# -e signal=ALL              跟踪所有信号

strace输出解读:

# strace ls /tmp 典型输出:
# execve("/bin/ls", ["ls", "/tmp"], [/* 45 vars */]) = 0
# brk(NULL)                               = 0x1faa000
# mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f...
# access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
# open("/etc/ld.so.cache", O_RDONLY)     = 3
# open("/etc/ld.so.cache", O_RDONLY)     = 3
# open("/lib64/libc.so.6", O_RDONLY)     = 3
# ...
# open("/tmp", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
# getdents(3, /* 12 entries */, 32768)   = 368
# write(1, "file1\nfile2\nfile3\n", 18) = 18
# +++ exited with 0 +++

# 解读:
# execve    - 执行程序
# brk       - 内存分配
# mmap      - 内存映射
# open      - 打开文件
# read/write - 读写文件
# getdents  - 读取目录
# write     - 输出到标准输出
# exited    - 进程退出

实用场景:

# 场景1:程序启动卡住,定位在哪个步骤
strace -f -o /tmp/strace.log your_program
# Ctrl+C 后分析日志
tail -100 /tmp/strace.log

# 场景2:找出程序慢在哪里
strace -c -T -p 12345
# 运行一段时间后 Ctrl+C
# 统计会显示每个系统调用的时间和次数

# 场景3:跟踪程序打开的文件
strace -e trace=open,openat,read,write -p 12345

# 场景4:跟踪网络连接
strace -e trace=network -p 12345

# 场景5:跟踪信号
strace -e signal=ALL -p 12345

# 场景6:找出程序读取了哪些配置文件
strace -e trace=open,openat -p 12345 2>&1 | grep ".conf"

strace性能分析(-c统计):

# 跟踪命令执行并统计
strace -c ls /tmp

# 输出示例:
# % time     seconds  usecs/call     calls    errors   syscall
# ------ ----------- ----------- --------- --------- -------------------
# 40.12    0.000123           2        56           mmap
# 25.33    0.000078           3        23           open
# 20.11    0.000062           1        89           read
# 10.22    0.000031           1        45           write
#  4.22    0.000013           2         7        3 brk
# ------ ----------- ----------- --------- --------- -------------------
# 100.00    0.000307                      220         3 total

# 解读:
# % time   - 该系统调用占总时间的百分比
# calls    - 调用次数
# errors   - 错误次数

strace注意事项:

# 1. strace会显著降低程序性能,生产环境慎用
# 2. 跟踪频繁调用的进程会产生大量输出
# 3. 跟踪时间过长会产生巨大的日志文件
# 4. 某些情况下strace无法跟踪(如容器内权限不足)
# 5. 不建议长时间在生产环境跟踪

工具6:lsof - 列出打开的文件

场景问题

想删除某个文件,提示"文件正在被使用"。想重启某个服务,担心有文件句柄没关闭。想查看某个进程打开了哪些文件,想知道端口被谁占用了。

工具介绍

lsof是List Open Files的缩写,可以列出进程打开的所有文件。Linux里一切皆文件,包括普通文件、目录、块设备、网络 sockets、管道等。lsof能帮你查看这些被打开的资源。

安装

# RHEL/CentOS
yum install lsof -y

# Debian/Ubuntu
apt install lsof -y

核心用法

lsof基本操作:

# 查看所有打开的文件(需要root权限才能看到全部)
sudo lsof

# 查看某个用户打开的文件
sudo lsof -u username

# 查看某个进程打开的文件
sudo lsof -p 12345

# 查看某个端口被谁占用
sudo lsof -i :80

# 查看某个文件被谁占用
sudo lsof /var/log/messages

# 查看某类文件(所有网络文件)
sudo lsof -i

# 查看所有网络连接
sudo lsof -i -P -n
# -P: 禁用端口号到服务名的转换(更快)
# -n: 禁用IP到主机名的转换(更快)

常用场景:

# 场景1:查看端口占用
# 查找监听在80端口的进程
sudo lsof -i :80

# 查找所有TCP连接
sudo lsof -i tcp

# 查找连接到特定主机的进程
sudo lsof -i @192.168.1.100

# 查找UDP端口
sudo lsof -i udp

# 场景2:查看某个文件被哪些进程使用
sudo lsof /var/log/messages

# 场景3:查看某个用户打开的所有文件
sudo lsof -u mysql

# 场景4:查看某个目录下的所有打开文件
sudo lsof +D /var/log/
# +D: 递归查找(慎用,会扫描目录)

# 场景5:查找打开的文件数量最多的进程
sudo lsof | awk '{print $1}' | sort | uniq -c | sort -rn | head

# 场景6:查看进程打开的网络连接数
sudo lsof -i -n -P | awk '{print $9}' | cut -d: -f2 | sort | uniq -c | sort -rn | head

lsof高级用法:

# 查看已删除但未释放空间的文件(常见的日志问题)
sudo lsof | grep deleted

# 输出示例:
# COMMAND   PID   USER   FD   TYPE   DEVICE   SIZE    NODE    NAME
# mysqld   123   mysql   4u   REG   8,1    12345   67890   /var/log/mysql/slow.log (deleted)

# 这说明MySQL还在持有这个已删除的日志文件
# 需要重启MySQL或执行:kill -9 12345

# 查看某个文件系统的所有打开文件
sudo lsof +f -- /data

# 查看某类设备的打开文件
sudo lsof +D /dev/

# 查看某个进程打开的socket
sudo lsof -p 12345 -U

# 查看某类文件的统计
sudo lsof -s

实战案例:排查"文件正在被使用"

# 场景:尝试删除文件时报错
rm /tmp/test.log
# rm: cannot remove '/tmp/test.log': Text file busy

# 1. 查看文件被谁占用
sudo lsof /tmp/test.log

# 输出:
# COMMAND   PID   USER   FD   TYPE   DEVICE   SIZE    NODE    NAME
# bash    12345  user    3u   REG   8,1     1234   56789   /tmp/test.log

# 2. 确认是什么操作
sudo lsof -p 12345 -a -d 3

# 3. 处理方案:
# 方案A:通知进程正常关闭文件
kill -TERM 12345

# 方案B:强制关闭
kill -9 12345

# 方案C:如果进程是bash,可以 exit 退出会话

实战案例:排查日志文件不释放问题

# 场景:日志文件已经被删除,但磁盘空间没释放

# 1. 查看已删除但仍打开的文件
sudo lsof | grep deleted

# 输出:
# COMMAND   PID   USER   FD   TYPE   DEVICE   SIZE    NODE    NAME
# rsyslogd 123   root    3w   REG   8,1      0       12345   /var/log/messages (deleted)
# rsyslogd 123   root    4w   REG   8,1      0       12346   /var/log/secure (deleted)

# 2. 发现rsyslogd还在写这些已删除的日志文件

# 3. 解决方案:
# 方案A:重启rsyslog(会丢失一些日志)
systemctl restart rsyslog

# 方案B:通知进程关闭文件句柄
# 向rsyslogd发送HUP信号让它重新打开日志文件
killall -HUP rsyslogd

# 4. 验证
df -h /var
sudo lsof | grep deleted | grep rsyslog
# 应该没有输出了

工具7:tcpdump - 网络抓包

场景问题

服务器网络有问题,不知道是丢包还是延迟,不知道是哪个连接有问题。Web服务响应慢,想看看请求和响应内容。怀疑服务器被扫描或攻击,想看看流量特征。

工具介绍

tcpdump是Linux下最经典的网络抓包工具,能捕获和分析网络数据包,是排查网络问题的瑞士军刀。配合Wireshark可以分析更复杂的流量。

安装

# RHEL/CentOS
yum install tcpdump -y

# Debian/Ubuntu
apt install tcpdump -y

核心用法

tcpdump基本操作:

# 抓取所有包(需要root)
sudo tcpdump

# 抓取指定网卡
sudo tcpdump -i eth0

# 抓取指定数量包
sudo tcpdump -i eth0 -c 100

# 保存到文件(后续用Wireshark分析)
sudo tcpdump -i eth0 -w /tmp/capture.pcap

# 读取抓包文件
sudo tcpdump -r /tmp/capture.pcap

# 只抓TCP包
sudo tcpdump -i eth0 tcp

# 只抓UDP包
sudo tcpdump -i eth0 udp

# 只抓ICMP包
sudo tcpdump -i eth0 icmp

BPF过滤器(最核心的功能):

# 抓取特定端口
sudo tcpdump -i eth0 port 80
sudo tcpdump -i eth0 port 3306

# 抓取特定主机
sudo tcpdump -i eth0 host 192.168.1.100

# 抓取特定源IP
sudo tcpdump -i eth0 src host 192.168.1.100

# 抓取特定目标IP
sudo tcpdump -i eth0 dst host 192.168.1.100

# 组合条件
sudo tcpdump -i eth0 host 192.168.1.100 and port 80
sudo tcpdump -i eth0 port 80 or port 443
sudo tcpdump -i eth0 src host 192.168.1.100 and not port 22

# 抓取HTTP请求
sudo tcpdump -i eth0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):2] = 0x4745'
# 0x4745 是 "GE" (GET请求开始)

# 抓取HTTP Host头
sudo tcpdump -i eth0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x48545450' | grep Host
# 0x48545450 是 "HTTP"

tcpdump输出格式详解:

# 典型输出:
# 10:30:00.123456 IP 192.168.1.100.54321 > 192.168.1.1.80: Flags [S], seq 12345, win 65535, length 0

# 解释:
# 10:30:00.123456      - 时间戳(微秒精度)
# IP                   - 协议
# 192.168.1.100.54321  - 源IP和源端口
# >                    - 流量方向
# 192.168.1.1.80       - 目标IP和目标端口
# Flags [S]            - TCP标志位(S=SYN,F=FIN,P=PSH,A=ACK)
# seq 12345           - 序列号
# win 65535            - 窗口大小
# length 0            - 数据长度

# TCP标志位组合:
# [S]        SYN - 连接建立
# [S.]       SYN-ACK - 连接响应
# [.]        ACK - 确认
# [P.]       PSH-ACK - 推送数据
# [F.]       FIN - 结束连接
# [R.]       RST - 重置连接
# [S.F.]     SYN-FIN - 异常

实用场景:

# 场景1:排查Web响应慢
sudo tcpdump -i eth0 -A port 80 | grep -E "GET|HTTP/1.1|200 OK"

# 场景2:查看TCP连接建立过程(SYN握手问题)
sudo tcpdump -i eth0 'tcp[tcpflags] = tcp-syn'

# 场景3:查看TCP连接断开过程
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-fin != 0'

# 场景4:查看TCP重传
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-ack != 0' | grep "retransmission"

# 场景5:查看ICMP(ping)包
sudo tcpdump -i eth0 icmp

# 场景6:查看DNS查询和响应
sudo tcpdump -i eth0 port 53

# 场景7:查看ARP流量(邻居发现)
sudo tcpdump -i eth0 arp

# 场景8:抓取特定IP的所有包
sudo tcpdump -i eth0 host 192.168.1.100 -w /tmp/host.pcap

# 场景9:实时查看HTTP请求
sudo tcpdump -i eth0 -A -s 0 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
# 0x47455420 = "GET "

tcpdump与Wireshark配合:

# 1. 在服务器上抓包保存
sudo tcpdump -i eth0 -w /tmp/capture.pcap host 192.168.1.100 and port 80

# 2. Ctrl+C 停止抓包

# 3. 下载到本地(用scp或rz)
scp user@server:/tmp/capture.pcap ./

# 4. 用Wireshark打开分析
# wireshark capture.pcap

# 或者在本地直接分析远程抓包
# wireshark -k -i <(ssh user@server "tcpdump -i eth0 -w - host 192.168.1.100")

tcpdump性能分析:

# 场景:排查网络延迟是丢包还是高延迟

# 1. 查看SYN重传
sudo tcpdump -i eth0 'tcp[tcpflags] = tcp-syn' | grep "retransmission"

# 2. 查看重复ACK(丢包信号)
sudo tcpdump -i eth0 'tcp[13] = 2' | head

# 3. 查看窗口大小变化(判断是否因窗口为0导致卡顿)
sudo tcpdump -i eth0 'tcp[13] & 2 != 0' | awk '{print $3, $5}' | sort | uniq -c

# 4. 查看连接建立时间
sudo tcpdump -i eth0 'tcp[tcpflags] = tcp-syn' -T statistics

工具8:netstat/ss - 网络连接查看

场景问题

想看服务器有哪些连接在建立、有多少连接是ESTABLISHED、有多少在TIME_WAIT。想看某个端口被谁监听,想查Socket队列有没有堆积。

工具介绍

netstat是经典的网络统计工具,功能全面但稍慢。ss是netstat的现代替代品,速度快很多,能显示更多信息。两者配合使用。

安装

# 默认已安装,如果没有:
yum install net-tools iproute -y   # netstat和ss
apt install net-tools iproute2 -y

核心用法

netstat基本操作:

# 查看所有连接
netstat -an

# 只显示监听端口
netstat -ln

# 显示TCP连接
netstat -tn

# 显示UDP连接
netstat -un

# 显示Socket摘要
netstat -s

# 显示路由表
netstat -r

# 显示接口统计
netstat -i

# 显示进程信息(需要root)
netstat -tnp

# 常用组合:查看TCP连接状态统计
netstat -tn | awk '/^tcp/ {print $6}' | sort | uniq -c | sort -rn

ss基本操作:

# ss比netstat更快

# 查看所有连接
ss -an

# 查看监听端口
ss -ln

# 查看TCP连接
ss -tn

# 查看UDP连接
ss -un

# 查看Socket摘要
ss -s

# 查看进程信息
ss -tnp

# 查看详细Timer信息(连接超时、重传等)
ss -ti

# 查看内存信息
ss -m

# 常用组合:按状态统计TCP连接
ss -tn | awk '/^tcp/ {print $1}' | sort | uniq -c | sort -rn

# 查看特定端口
ss -tn sport = :80 or dport = :80
ss -tn state established '( sport = :80 or dport = :80 )'

连接状态分析:

# 查看各状态的连接数
ss -tn state time-wait | wc -l    # TIME_WAIT数量
ss -tn state established | wc -l  # ESTABLISHED数量

# 查看TIME_WAIT的原因
# 大量TIME_WAIT通常是频繁创建短连接导致
# 优化方法:
# 1. 服务端开启 TIME_WAIT 复用
# 2. 客户端使用长连接
# 3. 调整内核参数

# 查看半开连接(SYN_RECV)
ss -tn state syn-recv

# 查看连接队列堆积
# 如果SYN_RECV很多,说明连接队列满了

# 查看全连接队列(listen backlog)
ss -ltn sport = :80
# Backlog 列就是全连接队列长度

# 查看半连接队列
ss -ltn sport = :80
# 如果Send-Q < Recv-Q,可能半连接队列有问题

Socket缓冲区分析:

# 查看读写缓冲区大小
ss -tm

# 输出:
# State   Recv-Q   Send-Q   Local Address:Port    Peer Address:Port
# ESTAB   0        0        192.168.1.1:80         192.168.1.100:54321
#         mem:(r4368000,w8736000)

# Recv-Q/Send-Q:当前在队列中的数据
# mem:(r4368000,w8736000) = 读写缓冲区大小(字节)

# 查看内存使用
ss -sam

# 查看是否有内存泄漏
watch -n 1 'ss -s'
# 观察 total memory 是否持续增长

实战案例:排查Web服务器连接数过多

# 场景:Web服务器响应很慢,怀疑连接数过多

# 1. 查看TCP连接状态统计
ss -s

# 输出示例:
# Total: 456 (kernel 512)
# TCP:   1234 (kernel 512)
# ...
# ESTABLISHED: 123
# SYN_SENT:     5
# TIME_WAIT:    890   <-- 大量TIME_WAIT

# 2. 查看TIME_WAIT分布
ss -tn state time-wait | awk '{print $4}' | cut -d: -f2 | sort | uniq -c | sort -rn | head

# 3. 查看ESTABLISHED分布
ss -tn state established | awk '{print $5}' | cut -d: -f2 | sort | uniq -c | sort -rn | head

# 4. 查看每个IP的连接数
ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head

# 5. 如果某个IP连接数异常,可能在攻击
# 查看具体连接
ss -tn | grep "1.2.3.4"

# 6. 应对措施:
# - 封禁异常IP
iptables -I INPUT -s 1.2.3.4 -j DROP

# - 调整TIME_WAIT重用
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

# - 调整最大连接数
echo 4096 > /proc/sys/net/core/somaxconn

内核参数调优:

# /etc/sysctl.conf 添加

# TIME_WAIT重用(客户端)
net.ipv4.tcp_tw_reuse = 1

# TIME_WAIT超时时间(默认60秒)
net.ipv4.tcp_fin_timeout = 30

# 允许孤儿socket数量
net.ipv4.tcp_max_orphans = 262144

# TCP buffer自动调优
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 65536 6291456
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

# 连接队列
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192

# 应用配置
sysctl -p

工具9:curl + 常用网络诊断

场景问题

需要测试HTTP接口是否正常,想看响应头和响应时间。DNS解析对不对,CDN是否生效,想模拟各种HTTP请求。

工具介绍

curl是命令行里最常用的HTTP工具,支持各种协议和各种选项。不只是发请求,还能做认证、Cookie、文件上传下载、代理等。

核心用法

HTTP请求:

# GET请求
curl https://example.com

# GET请求,显示响应头
curl -i https://example.com

# GET请求,只显示响应头
curl -I https://example.com

# 显示请求和响应头(调试用)
curl -v https://example.com

# 显示更详细的信息(包括证书、版本等)
curl -vv https://example.com

# 跟随重定向
curl -L https://example.com

# 保存到文件
curl -o /tmp/output.html https://example.com

# 下载文件(自动用原文件名)
curl -O https://example.com/file.tar.gz

# 不显示进度条
curl -s -O https://example.com/file.tar.gz

POST请求:

# POST表单数据
curl -X POST -d "username=admin&password=123456" https://example.com/login

# POST JSON数据
curl -X POST -H "Content-Type: application/json" \
     -d '{"username":"admin","password":"123456"}' \
     https://example.com/api/login

# 带认证的POST
curl -X POST -u user:pass \
     -d "data=value" \
     https://example.com/api

# 文件上传
curl -X POST -F "file=@/tmp/test.txt" https://example.com/upload

# 设置自定义头
curl -H "Authorization: Bearer token123" \
     -H "X-Custom-Header: value" \
     https://example.com/api

高级用法:

# 限速下载(100KB/s)
curl --limit-rate 100k -O https://example.com/largefile.tar.gz

# 最大下载时间
curl -m 30 -O https://example.com/file  # 30秒超时

# 连接超时(比-m更细粒度)
curl --connect-timeout 10 -I https://example.com

# 使用代理
curl -x http://proxy.example.com:8080 https://example.com

# 使用Cookie
curl -b "session=abc123" https://example.com/api

# 保存Cookie到文件
curl -c /tmp/cookies.txt https://example.com/login

# 读取Cookie文件
curl -b /tmp/cookies.txt https://example.com/api

# 跳过证书验证(测试用)
curl -k https://example.com(测试用,不推荐生产用)

# 指定TLS版本
curl --tlsv1.2 https://example.com

# 指定CA证书
curl --cacert /etc/ssl/certs/ca-certificates.crt https://example.com

实用脚本:

#!/bin/bash
# http_health_check.sh - HTTP健康检查脚本

check_http() {
local url=$1
local name=${2:-$url}
local expected_code=${3:-200}

# 获取状态码和响应时间
    response=$(curl -o /dev/null -s -w "%{http_code}|%{time_total}|%{size_download}" \
                --connect-timeout 5 -L "$url")

    code=$(echo$response | cut -d'|' -f1)
    time=$(echo$response | cut -d'|' -f2)
    size=$(echo$response | cut -d'|' -f3)

if [ "$code" = "$expected_code" ]; then
echo"[OK] $name - HTTP $code - ${time}s - ${size}bytes"
return 0
else
echo"[FAIL] $name - Expected $expected_code, got $code - ${time}s"
return 1
fi
}

# 使用示例
check_http "https://example.com""主站""200"
check_http "https://example.com/api/health""API健康检查""200"
check_http "https://example.com/static/test.js""静态资源""200"
check_http "https://example.com/notexist""404测试""404"

DNS调试:

# 查看DNS解析过程(配合watch)
watch -n 1 'dig example.com +short'

# 模拟DNS查询
dig @8.8.8.8 example.com

# 只查看Answer部分
dig example.com +short

# 查看完整DNS记录
dig example.com ANY

# 查看MX记录
dig example.com MX

# 反向DNS查询
dig -x 93.184.216.34

# 批量检查域名解析
for domain in example.com google.com github.com; do
    ip=$(dig +short $domain)
echo"$domain -> $ip"
done

CDN/CDN效果验证:

# 查看响应头(判断CDN)
curl -I https://example.com

# 常见CDN响应头:
# Cloudflare: cf-ray, cf-cache-status
# Akamai: x-akamai-transformed, server
# CloudFront: x-cache, via
# 阿里云CDN: x-swift-optimized, x-oss

# 对比直连和CDN
# 直连IP
dig +short example.com
# 回源测试
curl -H "Host: example.com" http://<origin_ip>/

# 检查缓存状态
curl -I https://example.com/static/file.js
# 看 Age: 表示CDN缓存了多少秒
# 看 x-cache-hit 表示命中缓存

工具10:systemctl + journalctl - 服务与日志管理

场景问题

服务起不来了,想看启动失败的原因。服务运行正常但响应慢,想看实时日志。想查看某个时间段的历史日志。服务重启了,想知道是谁触发的、为什么。

工具介绍

systemctl是systemd服务的控制工具,用来启动、停止、重启、查看服务状态。journalctl是systemd日志查看工具,比传统的/var/log更强大,支持按时间、按服务、按级别过滤。

核心用法

systemctl基本操作:

# 查看服务状态
systemctl status nginx

# 启动服务
sudo systemctl start nginx

# 停止服务
sudo systemctl stop nginx

# 重启服务
sudo systemctl restart nginx

# 重新加载配置(不中断连接)
sudo systemctl reload nginx

# 查看服务是否运行
systemctl is-active nginx

# 查看服务是否开机启动
systemctl is-enabled nginx

# 设置开机启动
sudo systemctl enable nginx

# 禁用开机启动
sudo systemctl disable nginx

# 重新加载systemd配置
sudo systemctl daemon-reload

# 查看所有运行的服务
systemctl list-units --type=service --state=running

# 查看所有失败的服务
systemctl --failed --type=service

journalctl基本操作:

# 查看所有日志(从最早开始)
sudo journalctl

# 从最新开始查看
sudo journalctl -e

# 实时跟踪日志
sudo journalctl -f

# 查看特定服务的日志
sudo journalctl -u nginx

# 查看特定服务的错误日志
sudo journalctl -u nginx -p err

# 日志级别:emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)

# 按时间过滤
sudo journalctl --since "2026-05-11 10:00:00"
sudo journalctl --since "1 hour ago"
sudo journalctl --since today
sudo journalctl --since yesterday
sudo journalctl --since "2026-05-01" --until "2026-05-02"

# 查看上次启动的日志
sudo journalctl -b -1

# 查看指定boot ID的日志
sudo journalctl --list-boots
sudo journalctl -b abc123def456

# 查看磁盘占用
sudo journalctl --disk-usage

# 清理旧日志(保留最近7天)
sudo journalctl --vacuum-time=7d

# 清理到指定大小
sudo journalctl --vacuum-size=500M

# 按行数限制
sudo journalctl --vacuum-files=5

组合使用技巧:

# 查看服务启动失败原因
sudo systemctl status nginx
sudo journalctl -u nginx -p err --no-pager -n 50

# 查看服务是否被人手动重启
sudo journalctl -u nginx --since "1 day ago" | grep -E "Started|Stopping|Started"

# 查看某命令的执行历史
sudo journalctl --since "1 hour ago" | grep "nginx"

# 查看内核日志(dmesg)
sudo journalctl -k

# 查看所有 critical 级别的日志
sudo journalctl -p crit

# 实时查看某服务的错误
sudo journalctl -u nginx -p err -f

# 统计各服务日志大小
for svc in nginx mysql redis; do
    size=$(sudo journalctl -u $svc --since "30 days ago" 2>/dev/null | wc -c)
echo"$svc$(($size/1024/1024))MB"
done

服务管理进阶:

# 查看服务的依赖关系
systemctl list-dependencies nginx

# 查看服务被谁依赖
systemctl list-dependencies --reverse nginx

# 查看服务资源限制
systemctl show nginx | grep -E "Memory|Limit"

# 修改服务资源限制(临时)
sudo systemctl set-property nginx MemoryLimit=512M

# 查看服务启动时间
systemctl show nginx -p ActiveEnterTimestamp

# 查看服务的进程
systemctl status nginx
# 或
ps aux | grep nginx

# 查看服务配置
systemctl cat nginx

# 查看服务完整配置(包括默认配置)
systemctl show nginx

故障排查示例:

# 场景:nginx服务启动失败

# 1. 查看服务状态
sudo systemctl status nginx

# 2. 查看详细日志
sudo journalctl -u nginx -p err --no-pager -n 100

# 3. 测试配置文件
sudo nginx -t

# 4. 如果是端口被占用
sudo lsof -i :80

# 5. 杀死占用进程
sudo kill $(sudo lsof -t -i :80)

# 6. 重新启动
sudo systemctl restart nginx

# 7. 验证
sudo systemctl status nginx
curl -I localhost
# 场景:mysql服务自动停止

# 1. 查看服务状态
sudo systemctl status mysql

# 2. 查看什么时候停的、为什么停的
sudo journalctl -u mysql --since "1 day ago" | grep -E "Stopping|Started|Killed|OOM"

# 3. 查看是否是OOM被kill
sudo journalctl -k | grep -i "oom"
dmesg | grep -i "oom"

# 4. 查看资源限制
systemctl show mysql | grep -E "Memory|Limit"

# 5. 如果是OOM,查看内存使用峰值
sudo journalctl -u mysql --since "1 day ago" | grep -i "memory"

# 6. 解决方案:
# - 增加内存
# - 优化MySQL内存配置(减少innodb_buffer_pool_size)
# - 添加swap
# - 设置OOM优先级

总结:工具组合使用示例

场景:Web服务器响应慢综合排查

#!/bin/bash
# web_slow_diagnose.sh - Web响应慢综合排查脚本

echo"=== Web服务器响应慢排查 ==="
echo"开始时间: $(date)"

# 1. 初步诊断:系统资源
echo""
echo"--- CPU和内存 ---"
top -b -n 1 | head -20
echo""
free -h

# 2. 查看网络连接状态
echo""
echo"--- 网络连接统计 ---"
ss -s

# 3. 查看TIME_WAIT数量
echo""
echo"--- TIME_WAIT分析 ---"
echo"TIME_WAIT数量: $(ss -tn state time-wait | wc -l)"
echo"ESTABLISHED数量: $(ss -tn state established | wc -l)"

# 4. 查看端口连接分布
echo""
echo"--- TOP连接IP ---"
ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

# 5. 查看进程CPU/内存占用
echo""
echo"--- TOP进程 ---"
ps aux --sort=-%cpu | head -15

# 6. 查看磁盘IO
echo""
echo"--- 磁盘IO ---"
iostat -xcz 1 5 2>/dev/null | tail -20

# 7. 查看nginx日志(最近的错误)
echo""
echo"--- Nginx错误日志 ---"
tail -20 /var/log/nginx/error.log

# 8. 查看PHP-FPM状态(如有)
if systemctl is-active php-fpm >/dev/null 2>&1; then
echo""
echo"--- PHP-FPM状态 ---"
    curl -s localhost/status | head -20
fi

# 9. 查看后端连接(如使用proxy)
echo""
echo"--- 后端服务状态 ---"
curl -s localhost/health 2>/dev/null || echo"health endpoint不可用"

echo""
echo"=== 排查完成 ==="

场景:数据库连接问题排查

#!/bin/bash
# db_connection_diagnose.sh - 数据库连接问题排查

echo"=== 数据库连接问题排查 ==="

# 1. 查看连接数
echo""
echo"--- MySQL连接统计 ---"
mysql -e "SHOW STATUS LIKE 'Threads_connected';"
mysql -e "SHOW STATUS LIKE 'Max_used_connections';"
mysql -e "SHOW VARIABLES LIKE 'max_connections';"

# 2. 查看当前连接
echo""
echo"--- 当前连接 ---"
mysql -e "SHOW FULL PROCESSLIST\G" | grep -E "Command|State|Info" | head -50

# 3. 分析连接状态
echo""
echo"--- 连接状态分布 ---"
mysql -e "SHOW FULL PROCESSLIST\G" | grep "Command:" | sort | uniq -c | sort -rn

# 4. 分析连接来源
echo""
echo"--- 连接IP分布 ---"
mysql -e "SHOW FULL PROCESSLIST\G" | grep "Host:" | awk -F: '{print $1}' | cut -d' ' -f2 | sort | uniq -c | sort -rn | head -10

# 5. 查看慢查询
echo""
echo"--- 慢查询 ---"
mysql -e "SHOW GLOBAL STATUS LIKE 'Slow_queries';"

# 6. 查看锁等待
echo""
echo"--- 锁等待 ---"
mysql -e "SELECT * FROM information_schema.INNODB_LOCK_WAITS\G" 2>/dev/null || echo"无锁等待"

# 7. 查看系统资源
echo""
echo"--- 系统IO ---"
iostat -xcz 1 5 2>/dev/null | tail -15

# 8. 查看临时表使用
echo""
echo"--- 临时表使用 ---"
mysql -e "SHOW GLOBAL STATUS LIKE 'Created_tmp%';"

附录:工具速查表

工具
用途
常用命令
htop
交互式进程监控
htop
htop -u userhtop -t
atop
综合系统监控
atop
atop -r /var/log/atop/xxx
iotop
进程级IO监控
iotop -b -o
iotop -b -u user
nethogs
按进程网络流量
nethogs eth0
ncdu
磁盘使用分析
ncdu /
ncdu -x /
strace
系统调用追踪
strace -p PID
strace -c command
lsof
打开的文件
lsof -i :80
lsof -p PID
tcpdump
网络抓包
tcpdump -i eth0 port 80 -w file.pcap
netstat/ss
网络连接
ss -tn
ss -sss -tnp
curl
HTTP诊断
curl -v
curl -Icurl -X POST
journalctl
系统日志
journalctl -u svc -f
journalctl --since today

文档信息

  • 版本:1.0
  • 更新日期:2026-05-11
  • 适用系统:RHEL/CentOS 7/8/9,Ubuntu 18.04/20.04/22.04
  • 适用场景:Linux服务器日常运维

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 21:56:35 HTTP/2.0 GET : https://f.mffb.com.cn/a/492916.html
  2. 运行时间 : 0.222821s [ 吞吐率:4.49req/s ] 内存消耗:4,917.09kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=470210b4023a077224c46142a5ea66a6
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000911s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001536s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002906s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000483s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000615s ]
  6. SELECT * FROM `set` [ RunTime:0.000211s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000646s ]
  8. SELECT * FROM `article` WHERE `id` = 492916 LIMIT 1 [ RunTime:0.000777s ]
  9. UPDATE `article` SET `lasttime` = 1783086995 WHERE `id` = 492916 [ RunTime:0.016677s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.002246s ]
  11. SELECT * FROM `article` WHERE `id` < 492916 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.011959s ]
  12. SELECT * FROM `article` WHERE `id` > 492916 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003454s ]
  13. SELECT * FROM `article` WHERE `id` < 492916 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001369s ]
  14. SELECT * FROM `article` WHERE `id` < 492916 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001812s ]
  15. SELECT * FROM `article` WHERE `id` < 492916 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010364s ]
0.227204s