我想要一个只要系统启动就始终运行的服务,如果用户想要停止它,他们必须重新启动(出于安全原因),否则它将继续运行。
systemd 有这个选项吗?我四处寻找,却一无所获。
编辑:我希望只要系统运行,服务就运行,无论用户执行任何操作。如果服务停止,可能会让系统关闭吗?重点是让它不可能不运行,如果它停止了,整个系统就应该关闭。
答案1
从man systemd.unit
看到Requires=
和BindsTo=
当您说“系统”时,我假设您的意思是multi-user.target
,但您可以将其替换为basic.target
, default.target
, graphical.target
。
如果我们考虑手册页,我们可以说multi-user.target
Requires= your.service
。然后手册页将显示:
Requires=
multi-user.target gets activated, your.service will be activated as well.
If your.service fails to activate, and an ordering dependency After= on
your.service is set, multi-user.target will not be started.
如果我们说multi-user.target
BindsTo=your.service
我们得到的东西可能会更好:
BindsTo=
In addition to the effect of Requires= it declares that if
your.service is stopped, multi-user.target will be stopped too.
When used in conjunction with After= on the same unit the
behaviour of BindsTo= is even stronger. In this case,
your.service has to be in active state for multi-user.target
to also be in active state.
添加Requires=
关系是微不足道的。在 中your.service
,添加以下内容:
[Install]
RequiredBy=multi-user.target
加起来BindsTo=
就比较困难了。您需要添加一个“插入”到multi-user.target
.
$ systemctl edit multi-user.target
[Unit]
BindsTo=your.service