如果同时发出两个“systemctl restart $some_service”命令,systemd 会做什么?

如果同时发出两个“systemctl restart $some_service”命令,systemd 会做什么?

如果一个进程运行systemctl restart something.service,而第二个进程也systemctl restart something.service稍后运行(但在第一个命令返回之前),systemd 会做什么?

第二个命令会restart“等待”第一个命令完成,然后发出新的重启命令吗?或者如果重启已经在进行中,它基本上不会产生任何效果?还是其他原因?

答案1

重启将对停止作业和启动作业进行排队。默认情况下,所有作业都使用“替换”模式进行排队;这意味着如果单元已经启动,它将立即停止(中止任何正在进行的启动),然后重新启动。

使用单独的启动/停止操作,您可以使用--job-mode=(例如start --job-mode=replace-irreversiblystop --job-mode=fail)来控制它,但似乎restart子命令不能正确传播指定的作业模式,至少在当前的 systemd 版本中是这样。

相关内容