如何关闭Linux中的不必要服务?适配Ubuntu 22.04与CentOS 7的详细操作教程
世界杯实时直播 9907 2026-08-16 11:47:20

昨天凌晨2点,我运维的香港服务器 CPU 使用率飙升到了 100%,网络带宽也出现了莫名的占用。登录系统后,我发现几个不常用的服务居然在后台运行,占据了大量资源。

作为一名 DevOps 工程师,我深知“少即是多”的道理。Linux 系统默认会启动很多服务,其中一部分并非我们业务所需,甚至在某些场景下可能带来安全隐患。因此,我决定彻底梳理系统服务,并永久禁用那些“不该存在”的进程。这篇文章就是我在排查、停用、禁用这些服务过程中的完整实操记录。

一、前置准备:识别正在运行的服务

我们首先要明确:当前系统有哪些服务正在运行?哪些是必须的?哪些是不需要的?

1. 查看所有活跃服务(基于 systemd 系统)

systemctl list-units --type=service --state=running

这个命令会列出所有正在运行的服务。输出中重点关注那些你不熟悉的服务名,例如 avahi-daemon.service、cups.service、bluetooth.service 等,这些通常用于桌面环境,在服务器上并不常用。

2. 查看所有已启用的服务(开机自启)

systemctl list-unit-files --type=service | grep enabled

配合前一条命令可以判断:哪些服务是“当前正在运行且设为开机自启”的,我们可以优先处理这些。

二、实际操作:停止并禁用不需要的服务

我们以 cups.service(打印服务,服务器中基本用不到)为例,执行停用流程:

1. 停止服务(当前生效)

sudo systemctl stop cups.service

这一步立即终止服务运行。

2. 禁用服务(下次启动不再自动运行)

sudo systemctl disable cups.service

这个操作会移除开机启动项,确保下次重启不会再次激活该服务。

3. 若彻底移除(可选)

sudo apt purge cups -y # Debian/Ubuntu

sudo yum remove cups -y # RHEL/CentOS

如果你确认永远不需要该服务,可以将其完全卸载。

三、批量操作技巧:一次性禁用多项服务

有些服务器启动了多个无用服务,我们可以批量处理。以下是我用过的一段 Bash 脚本,用于停用多个目标服务:

#!/bin/bash

# unwanted-services.sh

services=(

"cups.service"

"avahi-daemon.service"

"bluetooth.service"

"ModemManager.service"

)

for svc in "{services[@]}"; do

echo "Stopping and disablingsvc ..."

systemctl stop "svc"

systemctl disable "svc"

done

执行方式:

chmod +x unwanted-services.sh

sudo ./unwanted-services.sh

四、附加说明:如何防止服务被意外重新启动

有些服务即使被停用,在依赖更新或某些错误操作下可能会重新启用。为避免这种情况,可以使用 mask:

sudo systemctl mask bluetooth.service

这会将该服务链接到 /dev/null,彻底阻止它被启动。若以后想恢复,可以:

sudo systemctl unmask bluetooth.service

五、验证结果:确保服务状态已改变

使用以下命令确认服务状态:

systemctl is-active cups.service # inactive

systemctl is-enabled cups.service # disabled

六、附录:常见可禁用服务列表(仅供参考)

服务名

功能说明

适合禁用的场景

cups.service

打印服务

无打印需求的服务器

avahi-daemon.service

本地网络发现协议

无局域网广播需求

bluetooth.service

蓝牙连接

无蓝牙设备

ModemManager.service

管理拨号调制解调器

固定网络服务器

rpcbind.service

NFS 和 RPC 支持

未启用相关功能

snapd.service

Snap 应用管理

无使用 Snap 应用

⚠️ 请务必根据你系统实际应用场景判断是否禁用,某些服务可能是依赖组件的一部分。

七、小服务,大安全

这次停用无用服务的经历让我意识到:系统最可怕的不是“明显的异常”,而是“沉默的隐患”。通过逐一梳理和管理服务,我的系统空闲资源大幅提升,潜在攻击面也被有效收缩。

以下是对 “停止并禁用 Linux 系统中不需要的服务” 教程的补充,分别针对 Ubuntu 22.04 与 CentOS 7 的差异化操作细节与注意事项,方便你在不同发行版上精准实施:

八、Ubuntu 22.04 操作细节

Ubuntu 22.04 默认使用 systemd,但其生态中仍保留了一些特有服务管理工具(如 service 命令、snap 框架)。以下是具体建议:

1. 服务管理建议使用 systemctl 替代 service

尽管 service 命令依然存在,但推荐统一使用 systemd 方式:

sudo systemctl stop apache2.service

sudo systemctl disable apache2.service

2. 移除 Snap 服务(若未使用)

Ubuntu 22.04 默认启动 snapd.service 和多个 Snap 应用的后台服务(如 snapd.apparmor.service)。如果你不使用 Snap 应用(如 Firefox Snap 版),可考虑彻底移除:

sudo systemctl stop snapd.service

sudo systemctl disable snapd.service

sudo apt purge snapd -y

⚠️ 注意:Snap 相关服务依赖深,如卸载前需确认无必要组件依赖 Snap。

3. 常见可安全禁用服务

服务名

默认状态

是否可禁用

禁用命令

bluetooth.service

已启用

✅ 是

systemctl disable --now bluetooth.service

avahi-daemon.service

已启用

✅ 是

systemctl disable --now avahi-daemon.service

cups.service

已启用

✅ 是

systemctl disable --now cups.service

snapd.service

已启用

⚠️ 需确认

见上文 Snap 部分

九、CentOS 7 操作细节

CentOS 7 同样使用 systemd,但其包管理系统为 yum(非 apt),默认服务集与 Ubuntu 有较大差异。

1. 使用 systemctl 停止和禁用服务

标准命令与 Ubuntu 类似:

sudo systemctl stop firewalld.service

sudo systemctl disable firewalld.service

2. 卸载服务使用 yum

以禁用并卸载 cups 服务为例:

sudo yum remove cups -y

3. firewalld 和 NetworkManager 注意事项

在 CentOS 7 服务器上,如果你使用的是 iptables 或已配置固定网络,以下两个服务可考虑禁用:

firewalld.service(前提是已手动配置防火墙或仅内网使用)

NetworkManager.service(如果是用 ifcfg-ethX 静态配置)

禁用示例:

sudo systemctl disable --now NetworkManager.service

4. 常见可禁用服务推荐

服务名

默认状态

是否可禁用

禁用命令

cups.service

启用

✅ 是

systemctl disable --now cups.service

bluetooth.service

启用

✅ 是

systemctl disable --now bluetooth.service

ModemManager.service

启用

✅ 是

systemctl disable --now ModemManager.service

firewalld.service

启用

⚠️ 需评估

systemctl disable --now firewalld.service

NetworkManager.service

启用

⚠️ 需评估

systemctl disable --now NetworkManager.service

⚠️ 务必在网络配置手动完成的前提下禁用 NetworkManager,否则可能会导致网络中断。

操作项

Ubuntu 22.04

CentOS 7

包管理器

apt

yum

默认网络服务

netplan + NetworkManager

network + NetworkManager

可安全禁用服务

cups, avahi, snapd, bluetooth

cups, bluetooth, ModemManager

服务管理命令

systemctl

systemctl

开机启动配置路径

/etc/systemd/system/

/usr/lib/systemd/system/

以下是 基于特定发行版的完整服务清单禁用脚本,我分别为 Ubuntu 22.04 和 CentOS 7 提供了版本,适合用于初步系统瘦身或生产环境中关闭无用服务。你可以根据业务实际情况增删服务项。

十、Ubuntu 22.04 – 批量禁用常见无用服务脚本

适用于无桌面环境、纯服务器用途场景。脚本使用 systemctl 批量关闭并禁用部分默认启用但非必要的服务。

#!/bin/bash

# disable-unwanted-services-ubuntu2204.sh

# Ubuntu 22.04 常见可禁用服务列表

services=(

bluetooth.service

cups.service

avahi-daemon.service

ModemManager.service

snapd.service

ufw.service # 替换为 iptables 的用户可以关闭它

)

echo "⏳ 开始禁用以下 Ubuntu 22.04 服务..."

for svc in "{services[@]}"; do

if systemctl list-units --full -all | grep -q "svc"; then

echo "🔧 停止并禁用: svc"

systemctl stop "svc"

systemctl disable "svc"

systemctl mask "svc"

else

echo "⚠️ 服务不存在: $svc(已跳过)"

fi

done

echo "✅ 所有目标服务已处理完毕。"

执行方式:

chmod +x disable-unwanted-services-ubuntu2204.sh

sudo ./disable-unwanted-services-ubuntu2204.sh

十一、CentOS 7 – 批量禁用常见无用服务脚本

适用于企业版 Linux(RHEL 7/CentOS 7)的服务器场景:

#!/bin/bash

# disable-unwanted-services-centos7.sh

# CentOS 7 常见无用服务

services=(

bluetooth.service

cups.service

avahi-daemon.service

ModemManager.service

NetworkManager.service # 如已配置 network-scripts 静态IP

firewalld.service # 如改用 iptables 或处于可信内网

)

echo "⏳ 正在批量停用 CentOS 7 的无用服务..."

for svc in "{services[@]}"; do

if systemctl list-units --full -all | grep -q "svc"; then

echo "🔧 停止并禁用: svc"

systemctl stop "svc"

systemctl disable "svc"

systemctl mask "svc"

else

echo "⚠️ 服务不存在: $svc(已跳过)"

fi

done

echo "✅ 所有服务已完成处理。"

🔒 加固建议:设置不可被激活

如需彻底防止服务被错误启用(即便通过依赖激活),请保留 mask 命令:

systemctl mask servicename.service

要恢复:

systemctl unmask servicename.service

📝 温馨提示

不要盲目禁用所有“你不认识的服务”,关键服务如 cron, ssh, rsyslog, systemd-logind 等必须保留。

建议在测试环境先运行,确保系统无副作用再部署到生产。

可结合 chkservice(图形化 TUI 工具)手动确认哪些服务已启用。

Copyright © 2022 98世界杯_乌拉圭世界杯 - cy078.com All Rights Reserved.