微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 我们如何屏蔽其单元文件位于/ etc / systemd / system下的服务?

我在/ etc / systemd / system下创建了一个测试服务,这是创建自定义单元文件的正确途径.

[root@apollo system]# cat sample.service
[Unit]
Description=This is my test service
Wants=chronyd.service
After=chronyd.service

[Service]
Type=forking
ExecStart=/root/sample.sh

[Install]
WantedBy=multiuser.target chronyd.service
#requiredBy=multiuser.target chronyd.service
#Alias=xyz
[root@apollo system]# pwd
/etc/systemd/system
[root@apollo system]#

我确保通过运行“systemctl daemon-reload”来识别systemd.我也能够停止/启动服务.

当我试图掩盖它时,它显示我这个错误

[root@apollo system]# systemctl mask sample.service
Failed to execute operation: File exists
[root@apollo system]#

这是因为systemd正在尝试使用此命令创建符号链接

ln -s /dev/null /etc/systemd/system/sample.service

由于sample.service已存在于/ etc / systemd / system中,因此该命令将失败,除非systemd将使用“ln -fs”.

那么这意味着我们不能屏蔽我们在/ etc / systemd / system下创建的任何单元文件

我试图将sample.service移动到/usr/lib / systemd / system并且我能够掩盖它,因为它能够在/ etc / systemd / system下创建一个没有任何障碍的符号链接.

有没有人经历过这个?你觉得这是个bug吗?

解决方法:

在没有先从那里删除文件的情况下,没有办法在/ etc / systemd / system屏蔽具有服务文件的服务.这是故意设计.

您可以使用systemctl disable servicename.service来禁用该服务,这在许多情况下与屏蔽它具有相同的效果.

systemd Three Levels of Off的作者的帖子详细介绍了systemd中stop,disable和mask之间的区别.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐