为什么我的服务显示vendor preset: disabled

2023年 9月 16日 227.4k 0

在使用systemd 的管理工具systemctl 管理进程的过程中,我发现有些服务显示vendor preset: disabled,比如docker服务,而有些服务显示vendor preset: enabled,比如sshd服务,并且使用systemctl enable 只会改变loaded 的状态,而vendor preset仍然为disabled

image.png

image.png

一、 为什么我的服务是vendor preset: disabled

经过查阅资料,我得知vendor preset为Linux发行版默认配置,是在Linux 发行制作过程预设的,一般一些重要的系统服务会配置为enabled,比如sshd,因此,我们在安装操作系统的时候,在一开始就能正常使用这些重要服务。

但像docker,mysqld这些用户应用服务,是由用户手工管理,使用systemctl enable 来设置为开机自启动,并没有设置到操作系统的发行预设里。 而且同一名称的服务,如果既使用了systemctl enable ,又配置了vendor preset,systemctl enable/disable的优先级要高于vendor preset。所以,我们没必要担心这儿的docker服务显示vendor preset: disabled

如果你有洁癖,看着disabled 不舒服,也不是说不能更改,但需要重启服务器,而且更改的意义不大。

更改的方法:

cd /lib/systemd/system-preset/
grep sshd *

vim 90-default.preset 在sshd 的后边加一行enable docker.service,保存

enable sshd.service
enable docker.service

reboot

此时的docker服务已经为vendor preset: enabled

image.png

再次拿dockerd的例子谈一谈,比如systemctl disable docker,重启服务器,开机后,虽然vendor preset: enabled ,但服务仍然是没有跟随操作系统的启动而启动,这就能很好地理解systemctl enable/disable的优先级高于vendor preset 的设置。

image.png

二、vendor preset: enabled/disable 和systemctl enable/disable 设计是重复吗

可能又会有人问,sshd 随操作系统启动是一个大概率事件,既然发行版预设sshd  为vendor preset: enabled,那为啥还要加入手工管理呢(systemctl enable/disable sshd)

手工管理是为了更灵活,我们需要使用sshd 来配置服务器,但如果遭遇服务器被攻击等情况,我们想临时关闭sshd服务一段时间,使用vnc 来管理,这种情况下systemctl disable sshd 存在也是合理的,避免因为服务器重启再次打开sshd服务,修复后,我们又想设置为开机启动,systemctl enable sshd又会派上用场。

实际上vendor preset 是操作系统设计之初认为需要优先启动的,相当于手机的出厂设置,systemctl enable/disable就是给用户管理使用的,用户是上帝,用户的操作优先级肯定最高。

注意:

CentOS 7开始预设并使用Systemd

Ubuntu 15.04开始并预设使用Systemd

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论