很多人都知道systemctl disable <service-name>是用于禁用一个服务的开机自启动,但是systemctl mask <service-name>可能很多人没有使用过,那么他们的区别是什么,下面我来具体说明。
systemctl enable <service-name>
该命令用于将一个服务设置为开机自启动,它会在操作系统启动时将服务添加到默认的启动服务列表中。实际上它是将/usr/lib/systemd/system/中的文件软链接到了/etc/systemd/system/multi-user.target.wants/目录中。
例如:执行以下命令启用docker服务的开机自启动
1 |
systemctl enable docker |
systemctl disable <service-name>
该命令用于禁用一个服务的开机自启动,它会从操作系统启动服务列表中移除该服务,实际上它是将/etc/systemd/system/multi-user.target.wants/目录中的软链接文件删除。
例如:执行以下命令禁用docker服务的开机自启动
1 |
systemctl disable docker |
systemctl mask <service-name>
该命令用于完全禁用一个服务,并阻止其被启动,即使在此之前你设置了开机自启动同样也是失效的,它会创建一个链接到/dev/null,从而阻止该服务的启动,即使其他服务尝试启动该服务,也将无效。
例如:执行以下命令禁用docker服务启动
1 |
systemctl mask docker |
systemctl unmask <service-name>
该命令用于取消对一个服务的禁用操作,使其可以被启动,它会移除systemctl mask命令创建的链接文件。
例如:执行以下命令取消对docker服务的禁用
1 |
systemctl unmask docker |
补充:
在执行了mask禁用服务后,强行start服务会报Failed to start <service-name>: Unit is masked.
在执行了mask禁用服务后,强行enable开机自启会报Failed to execute operation: Cannot send after transport endpoint shutdown
原文链接:systemctl mask和systemctl disable区别,转载请注明来源!