Init.d脚本解决带有参数的systemd问题

时间:2018-09-02 12:40:22

标签: linux systemd

我正在尝试将名为“ myService”的init.d脚本升级到systemd。init.d脚本具有1个参数,该参数决定了要执行的操作,并带有以下开关情况:

case "$choice" in 
    "start")
        # starts service logic here
    "stop") 
        # stops service logic here
    "filter") 
        # runs some .sh file from our PC
esac 

为了升级到systemd,我在systemd中创建myService.service文件,并在ExecuteStart和ExecuteStop上设置文件的属性以执行带有参数start或stop的init.d文件,现在可以执行以下操作:{ {1}},但是,如果我想调用systemctl start myService.service选项,则不允许执行filter。service,因为“ filter”对于systemctl无效。任何建议如何克服呢?

1 个答案:

答案 0 :(得分:1)

此方案不适合systemd作为服务管理者的职责,例如(但不限于):

  • 运行服务(例如启动,停止等)
  • 上述配置(例如,要在哪个系统级别运行)
  • 提供有关服务状态的信息
  • 声明各种服务之间的依赖关系和处理方式

尽管您没有提供有关服务实现的信息,但看来filter模式是应用程序/服务器特定的操作。而且,没有明确描述停止服务并发出filter时会发生什么。

因此,考虑到关注点的分离,我建议使用systemd来控制服务的启动和停止,但是请使用任何IPC(D-Bussockets,{{3} }等)服务正在用来触发filter操作。