0

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

有任何想法吗?

4

1 回答 1

0

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

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

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

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

编辑

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

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

于 2015-11-16T07:43:35.033 回答