在启动时,如何启动 NFS 路径中描述的 systemd 服务

在启动时,如何启动 NFS 路径中描述的 systemd 服务

在我们的 centos 8 服务器上,我们有许多自定义服务在启动时启动。为了将系统和“我们的东西”分开,我们将所有内容都放在我们的路径中/truc

这些服务是enabled通过一种systemctl enable /truc/etc/systemd/machin.service

之后daemon-reload就没问题了。在我的生产环境中,工作已经完成。

但在 dev / QA 上下文中,/truc是文件服务器上的远程 NFS 挂载。

在启动时,/truc 不包含服务文件,因此它们都不会启动

我尝试使用After=remote-fs.targetRequiresMountsFor=/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

相关内容