Ubuntu24.04关闭不必要systemd服务
Ubuntu 24.04 默认会启动很多用不上的 systemd 服务,比如打印服务、蓝牙服务、账号与 Avahi 广播等。
这些服务占内存、拖慢开机速度,还可能成为攻击入口。
本文会带你在不影响核心功能的前提下,安全关闭不必要的 systemd 服务,并通过命令验证系统资源占用和开放端口的变化。
整个操作只需 SSH 登录服务器即可完成,适合刚接触 Linux 运维的新手。
动手前先看清服务状态
登录服务器后,先用下面两个命令摸清系统里到底跑了哪些服务:
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=service | grep enabled
第一条列出所有正在运行的服务,第二条列出所有开机自启的服务。
建议重点看第二类,自启服务即使当前没运行,也可能在下次开机时悄悄启动。
再确认一下自己服务器的实际用途。如果你跑的是 Nginx、MySQL、Docker 等业务服务,那些与业务无关的常见冗余服务就可以列为候选关闭项。
如果是一台纯 Docker 主机,只需要保留 docker、ssh、systemd-networkd(或 networking)等基础服务。
关闭服务前先创建可回滚快照
关闭服务虽然风险不大,但为防手误,操作前建议先给系统做一次快照,云服务器可以在控制台创建快照,物理机则确认重要数据已备份。
随后在终端执行:
sudo systemctl status cups.service
通过状态输出确认这个服务是否真的不重要。cups 是打印服务,服务器环境基本用不到,可以放心关闭。
按需禁用几类典型冗余服务
以下是 Ubuntu 24.04 服务器中最常见的可关闭服务清单,你可以根据自己情况挑选:
- 打印服务:
cups.service、cups-browsed.service - 蓝牙服务:
bluetooth.service、bluetooth-mesh.service - 桌面与音视频:
gdm.service(如果没装桌面可忽略)、pipewire.service、pulseaudio.service - 系统广播与发现:
avahi-daemon.service、whoopsie.service - 其他自动检查:
apport.service、unattended-upgrades.service(若你希望手动管更新再关)
禁用命令见下,以 cups 为例:
sudo systemctl stop cups.service
sudo systemctl disable cups.service
stop 是立刻停止,disable 是取消开机自启。这一步要注意:
不要禁用 ssh、systemd-journald、systemd-logind、networkd-dispatcher 等核心服务,
否则可能导致无法远程登录或系统状态异常。
如果是通过 networkctl 管理网络的系统,务必保留 systemd-networkd.service;
如果使用传统的 /etc/network/interfaces,则保留 networking.service。
避开常见坑:mask 不是必须,依赖要检查
很多教程会让你用 systemctl mask 把服务根目录彻底隐藏,这样别人手动也启动不了。
但对新手来说,mask 可能让依赖它的其他程序报错。更稳妥的做法是先用 disable,观察一周确认没影响,再决定是否 mask。
另外,关闭前用下面命令检查服务是否被其他服务依赖:
sudo systemctl list-dependencies cups.service
如果输出里几乎没有关联项,就可以放心关。
如果有多行依赖,先了解清楚再动手。
重启后验证效果
完成上述操作后,重启一次系统让所有配置生效:
sudo reboot
重新登录后,依次执行下面的命令验证:
systemctl list-units --type=service --state=running
systemctl is-enabled cups.service
第一条看当前运行的服务列表里是否还有被关闭的服务,第二条确认 cups 等服务的自启状态是否为 disabled。
如果你设置了对外开放端口,还可以用 sudo ss -tulnp 查看监听端口,确认原来不需要的端口已消失。
如果发现某个服务关闭后导致业务异常,马上执行下面两条命令恢复:
sudo systemctl enable cups.service
sudo systemctl start cups.service
建议在关闭服务前把服务名记录到笔记里,方便需要时迅速恢复。
关于 Ubuntu 24.04 服务精简的常见疑问
关闭服务后系统会变慢吗? 不会。
减少后台进程反而会降低内存占用和 CPU 唤醒频率,让业务服务更稳定。
wifi 或者蓝牙关了能再开吗? 可以。
用 systemctl enable 和 systemctl start 两条命令就能恢复,无需重新安装系统。
为什么禁用后仍能看到进程在跑? 有些服务支持 socket 激活,也就是按需启动。
你可以用 sudo systemctl status cups.socket 查看对应的 socket 单元,一并禁用即可。
如果想进一步优化系统资源,可以花时间查一下每个 enabled 服务的实际用途,只保留和业务强相关的服务,是长期运维中最简单的安全习惯。
关闭不必要的 systemd 服务只是第一步,后续配合防火墙规则、SSH 密钥登录和自动安全更新,才能构成完整的攻击面收敛方案。
如果你在操作中遇到服务名找不到、依赖报错或者关机后服务自动复活的情况,先回看本文的避坑部分,再根据实际报错搜索对应解决方式,不要盲目大面积禁用系统服务。