自定义操作是什么意思?这里有些例子。
sudo service apache2 stop-htcacheclean
sudo service apache2 graceful-stop
sudo service apache2 start-htcacheclean
sudo service apparmor recache
将 sysvinit 脚本移植到 systemd 服务时如何重新实现这些?
systemd 的问题是,区分守护进程参数不能有条件地使用?
如何在遵守 Debian 政策的同时做到这一点?
或者您知道任何已经支持此类自定义/遗留操作的 Debian systemd 服务示例吗?
答案1
systemd 不支持对单元进行自定义操作。
解释“为什么”:单元(主要)是参与依赖图的东西。添加自定义操作意味着应该有一种方法来添加自定义类型的依赖项。这不必要地使语法和逻辑变得复杂。
实际上,您可能会将其视为一条规则:“一个单元 - 一个动作”。没有什么可以阻止您为每个应用程序拥有多个单元,命名为$application-$action
.例如:
apache2 graceful-stop
可能应该是停止 apache 的默认方式(对于非优雅的停止总是存在的systemctl kill
)apache2 {start,stop}-htcacheclean
应该直接翻译成apache2-htcacheclean.service
单位apparmor recache
可能ExecReload=
在apparmor.service
(或apparmor-recache.service
带有 的单独单元Type=oneshot
)