如何在 Debian 上实施符合策略的 systemd 自定义操作?

如何在 Debian 上实施符合策略的 systemd 自定义操作?

自定义操作是什么意思?这里有些例子。

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

相关内容