温馨提示×

ubuntu如何管理启动项以提升性能

小樊
41
2025-12-17 08:27:51
栏目: 智能运维

Ubuntu 启动项管理与性能提升

一、定位瓶颈与总体思路

  • 使用 systemd-analyze 定位耗时:
    • 总耗时与关键阶段:systemd-analyze time
    • 各服务耗时排序:systemd-analyze blame
    • 启动依赖链:systemd-analyze critical-chain
    • 生成可视化时间图:systemd-analyze plot > startup.svg
  • 原则:优先处理“耗时最长”的服务与“非必需”的自启项,避免盲目关闭关键系统服务。

二、管理 systemd 服务与内核启动项

  • 查看与筛选自启服务:
    • 列出所有单元:systemctl list-unit-files --type=service
    • 只看已启用:systemctl list-unit-files --type=service | grep enabled
  • 安全禁用与强禁:
    • 取消开机自启:sudo systemctl disable .service
    • 临时停止:sudo systemctl stop .service
    • 彻底屏蔽(防被其他服务唤起):sudo systemctl mask .service
    • 恢复:sudo systemctl enable .servicesudo systemctl unmask .service
  • 谨慎处理的常见服务(按需禁用,先确认用途):
    • 桌面网络图标与联网:NetworkManager.service(禁用后右上角无网络图标)
    • 等待网络就绪:NetworkManager-wait-online.service(可缩短等待,但依赖网络的程序可能延后可用)
    • 账户守护进程:accounts-daemon.service
    • 日志刷新:systemd-journal-flush.service(不要禁用,见下一节日志优化)
    • 开机动画等待:plymouth-quit-wait.service(可 mask 以缩短到图形界面时间)
  • 旧式 SysV 脚本(如仍在使用):
    • 移除开机启动:sudo update-rc.d -f remove
    • 添加开机启动:sudo update-rc.d defaults
  • 内核与 GRUB 启动优化:
    • 缩短菜单等待:编辑 /etc/default/grub,将 GRUB_TIMEOUT=2(或更小),然后执行 sudo update-grub
    • 无图形需求可切到多用户目标(服务器/无头环境):sudo systemctl set-default multi-user.target;恢复图形:sudo systemctl set-default graphical.target

三、图形会话与用户级自启动

  • 管理“启动应用程序”(会话级自启,非 systemd 服务):
    • 图形界面:设置 → 启动应用程序
    • 终端列出隐藏项:sudo sed -i “s/NoDisplay=true/NoDisplay=false/g” /etc/xdg/autostart/*.desktop
  • 原则:仅保留必要项(如输入法、网络管理托盘),移除即时通信、云盘、下载器等非必要常驻程序。

四、常见拖慢启动的因素与处理

  • Snap 包导致的 snapd.service 与大量 dev-loop.device* 耗时:
    • 查看与取舍:
      • 已安装 snap:snap list
      • 占用空间:df -h
    • 优化路径(二选一或混合):
      • 精简/替换:尽量用 apt/deb 版本替代常用软件(如 codetypora 等),减少 snap 数量
      • 彻底移除(谨慎):sudo apt purge snapd(会一并移除通过 snap 安装的应用,后续用 deb 重装)
  • 日志占用过大导致 systemd-journal-flush.service 耗时:
    • 查看占用:journalctl --disk-usage
    • 限制大小(编辑 /etc/systemd/journald.conf):
      • 示例:SystemMaxUse=50MSystemMaxFileSize=1GSystemMaxFiles=5
    • 应用配置并重启日志服务或系统:sudo systemctl restart systemd-journald
  • 其他通用优化(与启动体验间接相关):
    • 更新系统与驱动:sudo apt update && sudo apt upgrade
    • 使用 SSD、增大 内存、减少 swappiness(如 sudo sysctl vm.swappiness=10)。

五、操作建议与风险提示

  • 先备份与可回退:
    • 变更前记录命令;关键服务先 stop 验证,再 disable;必要时 enable/reenable 恢复
    • mask 操作要特别谨慎,确认不会被其他单元拉起
  • 变更后复核:
    • 复核耗时:systemd-analyze blame
    • 复核是否生效:systemctl is-enabled .service
  • 服务器与桌面策略不同:服务器优先保障稳定性与可用性;桌面用户优先保障登录后体验与必要常驻功能。

0