我在/ 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之间的区别.
原文地址:https://codeday.me/bug/20190813/1647660.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。