必须在生产环境中重命名 systemd 服务有多种原因。例如:
假设创建/etc/systemd/system/foo.service
并启用并启动了一个新的通用服务,如下所示:[1]
systemctl daemon-reload
systemctl enable --now foo
Run Code Online (Sandbox Code Playgroud)
然后,您可能希望将其从 重命名foo.service
为bar.service
,而不以任何方式影响相关进程。
在正常情况下,你可以这样做:
mv foo.service bar.service
systemctl daemon-reload
systemctl disable foo
systemctl enable bar
Run Code Online (Sandbox Code Playgroud)
然后你得到:
systemctl status foo
:running
not-found
disabled
systemctl status bar
:not-running
enabled
所以你可能想用以下方法修复:
systemctl stop foo
systemctl start bar
Run Code Online (Sandbox Code Playgroud)
或者重新启动。但是在生产环境中这是不可行的,因为您不想因为此类更改而停止应用程序。此外,重启计划会在数月或数年后进行。同时,长时间保留这样的已停止服务是有风险的,bar
在停止未找到的运行之前不应错误地启动该服务foo
。
简而言之。您会使用什么方法来重命名生产中的 systemd 服务?
理想的情况是这两种服务向后兼容。因此,停止foo
也停止bar
,反之亦然。
可能有一些我不知道的更好的方法,但这是一种解决方法,在您有机会重新启动服务之前,它基本上可以满足您的需要:
systemctl daemon-reload
)的符号链接。 归档时间: |
|
查看次数: |
8495 次 |
最近记录: |