在我们的 centos 8 服务器上,我们有许多自定义服务在启动时启动。为了将系统和“我们的东西”分开,我们将所有内容都放在我们的路径中/truc
这些服务是enabled
通过一种systemctl enable /truc/etc/systemd/machin.service
之后daemon-reload
就没问题了。在我的生产环境中,工作已经完成。
但在 dev / QA 上下文中,/truc
是文件服务器上的远程 NFS 挂载。
在启动时,/truc 不包含服务文件,因此它们都不会启动
我尝试使用After=remote-fs.target
或RequiresMountsFor=/truc
,但无论如何,文件未读取,因为启动时文件尚未出现
有什么秘诀/窍门吗?!
如果这种情况发生在开发服务器上,我可以在系统路径的某个位置添加“hack.service”。但我无法在此 NFS 挂载之外移动/复制服务文件
谢谢
答案1
我需要为我的 minecraft 服务器实例手动创建一个 systemd 服务。服务配置文件中有一个选项(我的是 /etc/systemd/system/mcservice.service),您可以定义启动延迟。假设服务以 root 身份运行,您只需将其添加到[服务]部分以下行(填写您的路径):
ExecStartPre=mount -t nfs <IP source>:<remote path> <local path>
保存文件后,您可以通过使用以下命令重新加载 systemctl 来实时测试服务:
sudo systemctl daemon-reload
如果服务用户不是 root,或者 NFS 挂载点的挂载是由其他服务(以 root 身份运行)完成的,则只需替换 mount 命令即可执行开始前例如,只需输入“sleep 10”(相应地调整时间)。此外,您还可以使用选项后并指向您的 NFS 挂载服务(挂载完成后它将运行)。
祝你好运,希望我能帮到你。
答案2
受到评论和意见的启发,因为这是用于开发/QA 服务器的,所以我尝试获得一个“快速而肮脏”的解决方案。
在 root 的 crontab 中,这似乎可以完成这项工作:
@reboot sleep 30 && /sbin/ldconfig && /bin/systemctl daemon-reload && /bin/systemctl restart machin.service
我的第一次尝试并不成功,ldconfig
因为/sbin/ldconfig