当前位置:首页>Linux>Linux启动引导过程详解

Linux启动引导过程详解

  • 2026-04-16 03:39:44
Linux启动引导过程详解

今天我们来聊Linux启动引导过程~

可能很多玩Linux的朋友会说:我只要能正常用系统就行,为啥非要搞懂它是怎么启动的?

答案很简单——谁还没遇到过服务器启动失败、GRUB报错的坑呢?

只有吃透启动流程,才能在系统“罢工”时快速找到问题、搞定修复,不用再抓瞎求助。对开发小伙伴来说,懂启动机制能优化程序加载速度,让你的作品更流畅;对架构师和运维同学来说,这更是把控系统稳定性的基础,相当于掌握了Linux的“开机密码”~

一、启动过程的总体框架

咱们按下电源键的那一刻,Linux就开启了一场“自动闯关”之旅,简单说就是五关连闯:先让硬件完成“自我体检”(BIOS/UEFI阶段),体检合格后,交给引导器GRUB“引路”;GRUB找到内核和initramfs,把它们加载到内存,让内核正式“上线”;内核搞定硬件驱动和根文件系统后,启动“大管家”systemd;最后systemd初始化终端或图形界面,等咱们登录,这场启动闯关就算圆满结束啦。

二、Linux 启动的五个核心阶段

2.1 阶段一:硬件初始化与 BIOS/UEFI

(1)电源开启与 POST(Power-On Self-Test)

按下电源键后,主板上的BIOS/UEFI就率先“开工”了,相当于给所有硬件做一次快速体检——挨个儿检查CPU、内存、显卡、硬盘控制器这些关键部件,要是哪件硬件出问题,BIOS/UEFI 都会通过独特的蜂鸣代码或者清晰的屏幕提示报错,告知我们问题所在。只有当所有硬件都顺利通过检测,没有异常情况出现,才能进入到下一步的硬件初始化环节

(2)硬件检测与初始化

固件在完成硬件自检后,紧接着进行硬件枚举工作。仔细梳理系统中的每一个硬件设备。同时,固件会初始化 CPU 的运行模式,让 CPU 以最佳状态准备运行。内存控制器也被激活,为内存的稳定运行提供保障。各类总线接口,如 PCIe(高速串行计算机扩展总线标准)、USB(通用串行总线)等,也在这个阶段完成初始化,建立起硬件设备之间顺畅的通信桥梁。这一系列操作完成后,硬件设备访问列表便构建完成。

(3)启动设备选择(Boot Device Selection)

固件会按照咱们预设的启动顺序(比如先硬盘、再U盘),逐一扫描能启动的设备。老款电脑的BIOS模式下,它会检查设备第一个扇区有没有“0xAA55”这个“启动签名”,有签名才认定是可启动设备;新款电脑的UEFI模式就更灵活了,直接读取EFI分区里的引导程序,挑一个最合适的设备启动,不用多费功夫。

(4)BIOS 与 UEFI 的区别及演进

BIOS 是传统的固件接口,诞生于计算机发展的早期阶段。它仅支持 MBR(主引导记录)分区表,这使得它在面对大容量硬盘时显得力不从心,最大只能支持 2TB 硬盘,并且最多只能管理 4 个主分区。

而 UEFI 则是现代的固件标准,具备诸多先进特性。它支持 GPT(全局唯一标识分区表)分区表,能够轻松应对高达 18EB 的超大硬盘,并且可以管理多达 128 个主分区。除此之外,UEFI 还配备了图形界面,让用户操作更加直观便捷;引入了安全启动功能,有效提升了系统的安全性。现在新电脑基本都用它,启动又快又安全。

(5)控制权移交:MBR 或 UEFI 固件加载 Boot Loader

BIOS模式下,找到可启动设备后,会把MBR里446字节的引导代码加载到内存,相当于把“启动接力棒”交给这段代码;UEFI模式就更直接,直接加载EFI分区里的GRUB引导器,完成“交接”后,就轮到引导器登场,开启下一段启动流程啦。

2.2 阶段二:Boot Loader 引导(GRUB 为例)

(1)Boot Loader 的作用:定位并加载内核

Boot Loader说白了就是“中间人”,一边连接固件,一边连接Linux内核,核心任务就是找到内核和initramfs。它会在硬盘的文件系统里“寻宝”,找到/boot目录下的内核镜像(vmlinuz)和临时根文件系统(initramfs),再把它们加载到内存,相当于给内核“铺好路”,让内核能顺利接管系统。

(2)GRUB 的启动流程:Stage 1 → Stage 1.5 → Stage 2

GRUB的启动分三步完成,Stage 1藏在MBR里,体积很小,只负责把Stage 1.5加载进来;Stage 1.5藏在MBR和第一个分区间隙,自带文件系统驱动,相当于一把“钥匙”,能让GRUB找到/boot分区;最后Stage 2登场,加载完整的GRUB功能,弹出启动菜单,让咱们可以选择启动哪个系统,完成和咱们的第一次交互。

(3)GRUB 配置文件(如 grub.cfg)解析

grub.cfg这个文件,平时藏在/boot/grub2目录里,看着不起眼,却是GRUB的“指挥手册”。里面记录着内核的位置、启动参数(比如指定根分区是/dev/sda1)、启动菜单的超时时间(比如等待5秒没操作就默认启动)。而且这个文件不用咱们手动写,用grub-mkconfig命令就能自动生成,适配咱们当前的系统配置,特别方便。

(4)多重引导配置与菜单选择

GRUB最实用的功能,就是支持多系统共存——比如你的电脑里装了Linux和Windows,启动时GRUB会弹出菜单,让你选启动哪个系统,就像选电视剧一样简单。要是你没手动选择,等超时后,就会默认启动预设的系统,不用每次都手动操作,特别省心。

(5)加载内核镜像(vmlinuz)及 initramfs

等GRUB做好所有准备,就会读取压缩的内核镜像vmlinuz,加载到内存里,同时也会加载initramfs。这个initramfs相当于“应急工具包”,里面装着启动初期需要的驱动和工具,尤其是内核要挂载根分区时,全靠它提供支持,相当于给内核“搭把手”,帮它顺利完成启动。

2.3 阶段三:内核初始化

(1)内核自解压与硬件检测

内核镜像加载到内存后,第一步就是“解压自己”,把完整的内核代码释放出来。接着,start_kernel()这个“内核总指挥”就会开始工作,逐一初始化CPU、内存管理、中断控制器这些核心部件,同时仔细“扫描”系统里的所有硬件,摸清硬件配置,为后续加载驱动、运行程序做好准备。

(2)驱动加载与 initramfs 的作用

内核要和硬件“沟通”,离不开驱动程序,而initramfs就是给内核提供驱动的“百宝箱”。不管是管理多硬盘的RAID驱动,还是解密加密分区的驱动,里面都有,能帮内核解决“找不到硬件”的难题。作为临时的根文件系统,它就像一个“过渡站”,帮内核顺利挂载真实的根分区,完成启动过渡。

(3)根文件系统挂载与切换

内核会用initramfs里的工具,检测并挂载真实的根文件系统,相当于给系统“扎根”——把系统的核心文件都放在指定的硬盘分区里。一旦挂载成功,内核就会从initramfs这个“临时过渡站”,切换到真实的根分区,此时initramfs的任务就完成了,把控制权正式交给根文件系统。

(4)启动 PID 1 进程(init 或 systemd)

内核初始化完成后,会创建系统里第一个用户空间进程,它的PID(进程编号)固定是1,相当于所有进程的“老大哥”。老款Linux系统里,这个“老大哥”是init;现在的系统基本都用systemd,它负责启动后续所有的系统服务和用户进程,标志着系统从“内核模式”正式切换到“用户模式”,咱们终于能和系统交互啦。

2.4 阶段四:用户空间初始化(Systemd 时代)

(1)Systemd 的核心功能:并行启动、依赖管理、unit 文件

systemd可以说是Linux启动界的“效率达人”,比传统的init系统好用太多。它最厉害的地方就是支持“并行启动”——不用等一个服务启动完再启动下一个,多个服务可以同时启动,大大缩短了开机时间。而且它通过unit文件管理系统资源,相当于给每个服务写了一份“说明书”,能精准控制服务的依赖关系(比如先启动网络,再启动Web服务),避免启动失败。

(2)目标(Targets)与运行级别(Runlevel)对比

systemd里的“target”,其实就是替代了传统的“运行级别”,用起来更灵活。简单说,multi-user.target就是命令行模式,适合服务器(不用图形界面,省资源);graphical.target就是图形界面模式,适合咱们日常用的电脑。想切换模式也很简单,用一条命令就能搞定,不用再记复杂的运行级别数字。

(3)关键启动脚本与服务单元

systemd启动服务,全靠/usr/lib/systemd/system目录下的service单元文件,这些文件就相当于服务的“启动指令”。比如sshd.service负责启动SSH服务,让咱们能远程连接服务器;network.target负责启动网络服务,确保电脑能上网。和传统的/etc/rc.d脚本比起来,这种方式更简单、更稳定,不用处理复杂的脚本依赖。

(4)日志系统(Journal)与启动排障

systemd自带的journalctl日志工具,简直是排查启动故障的“神器”,相当于系统的“日记本”,把启动过程中的每一步都记下来了。要是系统启动失败,输入journalctl -b命令,就能查看本次启动的完整日志,搜“failed”关键词,就能快速找到哪个服务出问题了,不用再瞎猜,排查效率直接拉满。

2.5 阶段五:登录与系统就绪

(1)初始化终端(tty)与图形界面(如 GDM)

systemd完成用户空间初始化后,会启动getty进程,给咱们打开6个虚拟终端(tty1-tty6),要是你习惯用命令行,就能通过这些终端操作系统。要是系统装了图形界面,systemd就会启动GDM、LightDM这些显示管理器,加载桌面环境,弹出图形登录界面,点击账号、输入密码就能进入系统,和咱们用Windows一样简单。

(2)用户登录流程与 PAM 认证

看到登录界面后,咱们输入账号密码,系统就会通过PAM(可插拔认证模块)“验明正身”——检查账号密码对不对,有没有登录权限。只有通过认证,系统才会加载咱们的个人环境变量和Shell,给咱们定制专属的系统环境,此时咱们就能正常用系统的所有功能啦。

(3)开机自启服务与脚本(如 /etc/rc.local)

老款Linux系统里,大家都喜欢用/etc/rc.local脚本实现开机自启,相当于给系统列了一份“开机必做清单”,开机后自动执行里面的命令。现在虽然systemd是主流,但这个脚本依然能用,只要通过rc-local.service启用就行。不过更推荐大家用systemctl enable命令设置服务自启,更简单、更适配systemd,新手也能轻松上手。

三、深入细节:关键组件与技术解析

3.1 MBR 与 GPT 分区表

(1)MBR 结构:引导代码 + 分区表 + 0xAA55 签名

MBR是硬盘分区表的“老祖宗”,藏在硬盘的第一个512字节扇区里,里面藏着启动的关键信息。前446字节是引导代码,负责加载Boot Loader,相当于启动的“第一指令”;中间64字节是分区表,能记录4个主分区的位置和大小,相当于硬盘的“分区地图”;最后2字节是0xAA55签名,相当于MBR的“身份证”,BIOS只有识别到这个签名,才会认可它是可启动的MBR。不过MBR的局限很明显,只能支持2TB硬盘、4个主分区,现在已经跟不上时代啦。

(2)GPT 与 UEFI 的兼容性

GPT是MBR的“接班人”,和UEFI是“黄金搭档”,能解决MBR的所有缺点。它用64位寻址,能支持高达18EB的超大硬盘,还能分128个主分区,满足咱们对大容量存储和多分区的需求。更贴心的是,它在硬盘的首尾各存了一份分区表,相当于“双保险”,就算一份损坏,另一份也能替补,稳定性拉满。不过要注意,GPT必须配合UEFI才能用于启动,两者缺一不可。

3.2 initramfs:临时的初始 RAM 文件系统

(1)用途:驱动加载、根文件系统解密 / 解压缩

initramfs虽然是临时的根文件系统,但作用却至关重要,相当于启动过程中的“应急工具包”。里面装着内核挂载根分区必须的驱动,比如用RAID阵列时,需要RAID驱动才能识别硬盘;根分区加密时,需要加密驱动才能解密;根分区压缩时,还能完成解压缩,帮内核获得完整的根文件系统,要是没有它,内核大概率会启动失败。

(2)如何构建自定义 initramfs

有时候咱们的系统有特殊需求,比如用了特殊的硬件,默认的initramfs里没有对应的驱动,这时候就需要自定义initramfs。Fedora、CentOS这些主流发行版,用dracut工具就能轻松搞定,它会自动检测系统硬件,把需要的驱动打包进去,咱们也能手动添加或删除驱动,适配自己的系统。Arch Linux用的是mkinitcpio工具,操作也很简单,新手跟着教程走就能完成。

3.3 Systemd Unit 文件深度解析

(1)单元类型(service、socket、mount 等)

在systemd里,所有系统资源都被抽象成了“unit”,不同类型的unit负责不同的功能,很好区分。service类型负责管理系统服务,比如Nginx、Apache这些Web服务,启停、重启都靠它;socket类型负责管理套接字,让服务之间能顺畅通信;mount类型负责配置挂载点,比如把硬盘分区挂载到/home目录;target类型相当于“服务组”,把相关的服务整合在一起,启动一个target就能启动多个服务,特别方便。

(2)依赖关系配置(After/Requires/Wants)

unit文件里的依赖配置,其实就是给服务“排好队”,避免出现“服务还没启动,就调用它”的问题。After是指定启动顺序,比如After=network.target,就是让这个服务在网络启动后再启动,避免网络没就绪导致启动失败;Requires是强依赖,比如A服务依赖B服务,B服务启动失败,A服务也启动不了;Wants是弱依赖,就算依赖的服务启动失败,当前服务也会尝试启动,更灵活。

(3)实例:编写一个自定义 Systemd 服务单元

咱们以Nginx服务为例,教大家写一个简单的unit文件,新手也能学会。在/etc/systemd/system目录下创建nginx.service文件,分三个部分写就行。[Unit]部分,写Description=Nginx Web Server(给服务起个名字),After=network.target(让Nginx在网络启动后启动);[Service]部分,写ExecStart=/usr/sbin/nginx -g 'daemon off;'(启动命令),Type=forking(启动后创建子进程),Restart=on-failure(异常退出自动重启);[Install]部分,写WantedBy=multi-user.target(在命令行模式下启动)。写完后,用systemctl start nginx就能启动服务,特别简单。

3.4 启动加速技巧与优化

(1)并行启动与服务依赖优化

systemd的并行启动能大幅加快开机速度,但要是服务之间有不必要的依赖,还是会拖慢速度。比如A服务本来不依赖B服务,却被设置了依赖,启动A服务时就要等B服务启动,浪费时间。咱们可以用systemctl list-dependencies命令,查看服务的依赖链,把冗余的依赖删掉,让服务能独立启动,充分发挥并行启动的优势。

(2)禁用不必要的服务

很多系统启动时,会自动启动一些咱们用不上的服务,比如电脑没有蓝牙,却启动了蓝牙服务;不用打印机,却启动了打印机服务,这些服务既占资源,又拖慢开机速度。咱们用systemctl disable命令,就能禁用这些不必要的自启服务,开机时它们就不会启动了,开机速度会明显变快。

(3)使用 systemd-analyze 分析启动耗时

要是觉得开机太慢,不知道问题出在哪,就用systemd-analyze这个工具,它能精准分析每个服务的启动耗时。直接输入systemd-analyze,就能看到系统总启动时间;输入systemd-analyze blame,会按耗时从长到短列出所有服务,哪个服务拖慢了开机速度,一目了然。比如发现数据库服务启动要10秒,就可以优化数据库配置,缩短启动时间。

四、启动故障排查与恢复

4.1 常见启动问题场景

(1)内核加载失败

内核加载失败是很常见的启动故障,原因也很简单:要么内核镜像损坏(比如更新内核时突然断电),要么initramfs缺失,要么根分区UUID配置错了。出现这种问题时,系统会提示“Kernel panic”,不用慌,咱们可以通过GRUB命令行,手动指定内核路径,临时启动系统,再慢慢修复问题。

(2)GRUB 配置错误导致无法启动

要是GRUB的配置文件(grub.cfg)损坏或参数错了,系统就会找不到内核,启动时直接进入GRUB救援模式,只能手动干预。这种情况下,咱们可以用救援系统,重新扫描内核和分区信息,生成新的grub.cfg文件,就能恢复正常启动了,操作也不算复杂。

(3)根文件系统损坏

突然断电、系统崩溃,很容易导致根文件系统损坏,就像图书馆的书架被弄乱了,系统找不到需要的文件,就无法启动。这时候咱们可以进入单用户模式,用fsck命令检查并修复文件系统,把“乱掉的书架”整理好,系统就能正常挂载根分区,顺利启动了。

(4)Systemd 服务启动失败

服务启动失败,大多是配置错了或者依赖的服务没启动。比如启动命令写错了、权限不够,或者依赖的数据库服务没启动,都会导致服务启动失败。遇到这种情况,用systemctl status命令查看服务状态,再用journalctl -u命令查看错误日志,就能找到问题根源,改好配置、启动依赖服务,就能解决问题。

4.2 排障工具与步骤

(1)查看启动日志(journalctl)

journalctl是排查启动故障的“万能工具”,它记录了启动过程中的所有细节,不管是内核报错,还是服务启动失败,都能在日志里找到线索。输入journalctl -b,查看本次启动的完整日志;想快速找错误,就用journalctl -b | grep "failed",过滤出失败的记录;只看内核日志,就用journalctl -k,精准定位内核层面的问题。

(2)使用救援模式(Rescue Mode)

要是系统严重启动失败,进不去正常模式,就用救援模式——从GRUB菜单选择救援模式,系统会启动一个备用环境,把根分区挂载为只读模式,防止进一步损坏。在救援模式里,咱们可以重新生成grub.cfg、替换损坏的内核文件,不管是配置错了还是文件损坏,基本都能修复。

(3)GRUB 命令行修复引导

GRUB配置文件损坏时,GRUB命令行就是“应急手段”。启动时进入GRUB命令行,用set命令设置根分区、内核路径,用linux命令指定内核和启动参数,用initrd命令指定initramfs路径,组合这几条命令,就能手动启动系统,等系统启动后,再修复grub.cfg文件就好。

(4)单用户模式(Single User Mode)修复

单用户模式相当于系统的“安全模式”,只有命令行界面,不启动多余的服务,适合修复简单的配置错误。比如忘记root密码,进入单用户模式就能直接修改;文件系统损坏,在这里用fsck命令修复;服务配置错了,在这里调整配置,操作简单又安全。

4.3 最佳实践:启动过程的监控与备份

平时定期用systemd-analyze监控启动耗时,建立一个“基准值”,要是某天发现开机突然变慢,就能快速排查原因——比如是不是新装了什么服务,或者服务依赖变了,及时优化,让系统一直保持快速启动。

另外,一定要记得备份/boot分区、grub.cfg配置文件和分区表,这些都是启动的“关键文件”,一旦损坏,系统就可能启动不了。用dd命令就能备份MBR或GPT分区表,把备份文件存到安全的地方,万一出问题,就能快速还原,减少麻烦。

五、总结与展望

5.1 Linux 启动流程的演进历史(SysVinit → Upstart → Systemd)

Linux启动系统的发展,其实就是不断“提速、优化”的过程。早期的SysVinit是“串行启动”,服务一个接一个启动,开机特别慢;后来Upstart出现,支持半并行启动,无依赖的服务能同时启动,开机速度快了不少,但还是有局限;直到systemd出现,彻底实现了全并行启动,还能精细化管理服务依赖,开机速度和稳定性都大幅提升,现在已经成为主流发行版的默认选择。

从SysVinit到systemd,能看出来Linux启动系统的核心需求——更高效、更易管理,未来也会朝着这个方向继续优化,给咱们带来更好的使用体验。

5.2 现代启动技术趋势(如容器化、微服务对启动的影响)

现在容器化(比如Docker)和微服务越来越火,也在改变Linux的启动方式。Docker容器启动特别快,不用完整的init系统,直接基于镜像启动应用,几秒钟就能启动一个容器,比虚拟机快太多,而且容器之间相互隔离,资源利用更高效,特别适合部署微服务。

微服务架构下,大型应用被拆成多个小服务,每个服务都能独立启动、独立扩展,系统启动时不再是“一次性启动所有服务”,而是按需启动,更灵活、更高效。未来,Linux启动会越来越轻量化、模块化,适配容器化和微服务的需求。

5.3 推荐(书籍、文档、在线工具)

书籍方面,《深入理解Linux内核》虽然有点难,但讲得特别细,能帮你吃透内核启动的底层原理,适合想深入研究的小伙伴;《Linux系统管理技术手册》更偏向实操,里面有很多启动相关的实战教程,运维同学必看。

在线文档方面,红帽官方文档特别权威,不管是BIOS/UEFI,还是systemd,都有详细的讲解,新手也能看懂;kernel.org上的内核文档,适合想探索内核奥秘的爱好者,能了解最前沿的内核启动技术。

实操工具方面,systemd-analyze和journalctl一定要熟练用,一个能分析启动耗时,一个能排查故障,平时多练几次,就能轻松搞定启动相关的问题。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-16 12:15:41 HTTP/2.0 GET : https://f.mffb.com.cn/a/485756.html
  2. 运行时间 : 0.086340s [ 吞吐率:11.58req/s ] 内存消耗:4,519.19kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=81644052227f9a01bb80f1bb450759d1
  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.000431s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000641s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000603s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000271s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000617s ]
  6. SELECT * FROM `set` [ RunTime:0.001568s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000732s ]
  8. SELECT * FROM `article` WHERE `id` = 485756 LIMIT 1 [ RunTime:0.000492s ]
  9. UPDATE `article` SET `lasttime` = 1776312941 WHERE `id` = 485756 [ RunTime:0.000947s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000288s ]
  11. SELECT * FROM `article` WHERE `id` < 485756 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000523s ]
  12. SELECT * FROM `article` WHERE `id` > 485756 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000414s ]
  13. SELECT * FROM `article` WHERE `id` < 485756 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001245s ]
  14. SELECT * FROM `article` WHERE `id` < 485756 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001425s ]
  15. SELECT * FROM `article` WHERE `id` < 485756 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001236s ]
0.087927s