【问题标题】:How can I run a service when the runlevel changes运行级别更改时如何运行服务
【发布时间】:2016-02-16 14:10:54
【问题描述】:

我想在运行级别从 2 变为 5 时自动启动 proftpd 服务。当它变回 2 时应该再次停止。

有什么想法吗?

【问题讨论】:

    标签: linux service proftpd runlevel


    【解决方案1】:

    如果您使用sysvinit,则过程很简单。只需在/etc/rc2.d 中有一个K??yourServiceName 脚本,在/etc/rc5.d 中有一个S??yourServiceName。它们将使用$RUNLEVEL 环境变量中的运行级别和stopstart(分别)参数调用。 ?? 代表两个数字,表示要使用的执行顺序(优先级?)。

    这已在新脚本(主要是在 debian 中,但我认为其他人也遵循这种方法)中被替换,通过在脚本本身中有几个字段来指示脚本之间的依赖关系,并且对于不依赖的脚本并行执行彼此依赖,但对于它们之间依赖的脚本是串行的。您可以在脚本本身中了解这种方法。这些脚本通常安装在/etc/init.d 中,并且由控制它的实用程序从那里建立到具有正确两位数位置的正确目录的符号链接。

    最后,如果你使用systemd(它已经完全取代了 sysv init 进程),还有另一种处理方法。您必须查找systemd(8) 的文档,我不知道。我只知道它是一个 dbus 服务提供商,进程通过这项新技术与之通信。

    前两种方法有些互操作,好像你固定执行的优先级,不填充依赖,system v init进程会尊重它。

    编辑

    此方法假定您将 proftpd 作为独立服务运行(不依赖于 xinetd(8) 或 inetd(8)),并且它具有在运行级别更改时启动和停止它的脚本。

    如果您需要根据xinetd(8) 运行它,我现在不知道 xinetd 是否具有允许您根据运行级别服务的参数。如果有,你很幸运。如果没有,你将不得不改变你的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多