0

0

Linux系统启动慢怎么办_启动项分析优化流程【教程】

舞夢輝影

舞夢輝影

发布时间:2025-12-20 15:48:21

|

880人浏览过

|

来源于php中文网

原创

Linux启动慢需用systemd-analyze查总时长、耗时服务和依赖链,禁用非必需服务如ModemManager,修复主机名解析、GRUB超时及网络依赖陷阱,并检查硬盘健康、SSD使用与initramfs臃肿问题。

linux系统启动慢怎么办_启动项分析优化流程【教程】

Linux启动慢,核心在于“不知道哪慢、为什么慢、怎么改”。不用猜,用系统自带工具几步就能定位并优化。关键不是全禁服务,而是看清依赖、避开阻塞、删掉真不需要的。

查清耗时在哪一环

打开终端,先跑这三条命令:

  • systemd-analyze:看总时间——内核花了多久?用户空间(也就是systemd启动服务那部分)花了多久?如果内核阶段超10秒,可能是驱动或硬件问题;用户空间超60秒,基本是服务拖累。
  • systemd-analyze blame:列出所有服务启动耗时,从高到低排序。重点关注前5名,比如apt-daily.serviceModemManager.servicebluetooth.service这类非必需服务常排前三。
  • systemd-analyze critical-chain:显示最长依赖链。它会告诉你“为什么A服务启动慢”——因为B服务卡在等C,C又依赖D……顺着@符号后的延迟时间,就能揪出真正的瓶颈节点。

安全禁用真正无用的服务

别一上来就disable一堆。先确认服务是否真的不用:

KAIZAN.ai
KAIZAN.ai

使用AI来改善客户服体验,提高忠诚度

下载
  • systemctl status 服务名 看描述和最近状态;
  • journalctl -u 服务名 --since "2 days ago" 查它最近有没有被调用过;
  • 常见可禁用项(桌面环境不需蜂窝/蓝牙/打印时):ModemManagerbluetoothcups-browsedavahi-daemon(局域网发现)、whoopsie(Ubuntu错误报告)。
  • 禁用命令:sudo systemctl disable 服务名;想彻底屏蔽防止被其他服务拉起,用 sudo systemctl mask 服务名(解除用 unmask)。

修复隐藏的等待陷阱

有些慢不是服务本身慢,而是系统在“傻等”:

  • 主机名解析失败:运行 hostname 查当前主机名,然后确保 /etc/hosts 里有对应行,例如:
    127.0.0.1 myhost(把myhost换成你实际的主机名)。缺这一行,很多服务(如SSH、Postfix)会DNS超时卡住几秒到十几秒。
  • GRUB菜单停留太久:编辑 /etc/default/grub,把 GRUB_TIMEOUT=5 改成 GRUB_TIMEOUT=1GRUB_TIMEOUT=0(设0需配合GRUB_HIDDEN_TIMEOUT_MINIMAL),再运行 sudo update-grub
  • 网络服务抢在网卡就绪前启动:检查 systemctl list-dependencies --reverse network.target,若发现某些服务(如docker、nfs-client)强依赖network.target但实际只需联网后才工作,可改用 network-online.target 并设置 Wants=network-online.target + After=network-online.target,避免空等。

硬件与配置兜底检查

如果上面都做了,启动仍慢,就得看底层:

  • 硬盘健康:运行 sudo smartctl -H /dev/sda(sda按实际盘符调整),看“SMART overall-health self-assessment test result”是否为PASSED;若有警告,SSD老化或机械盘坏道会严重拖慢initramfs解压和文件读取。
  • 是否用了SSD:传统机械硬盘(HDD)启动普遍比SSD慢2–4倍。只要条件允许,系统盘换SSD是最立竿见影的升级。
  • initramfs是否臃肿:运行 lsinitrd | wc -l,如果行数超5000,可能打包了太多无关模块。可重生成精简版:sudo dracut -f -v --regenerate-all(Fedora/RHEL系)或 sudo update-initramfs -u(Debian/Ubuntu系,配合删除不用的内核模块)。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

389

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

571

2023.08.10

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.12.07

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

249

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

494

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

398

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

436

2024.04.08

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1348

2023.06.21

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.2万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号