如何在运行级别更改时运行服务

时间:2015-11-15 11:24:22

标签: linux service proftpd runlevel

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

这已被新脚本(主要是在debian中,但我认为其他人也遵循这种方法)所取代,在脚本中有几个字段,表明脚本之间的依赖关系,并且执行是针对不同的脚本进行的。 t依赖于彼此,但是依赖于它们之间依赖的脚本。您可以在脚本本身中阅读有关此方法的信息。这些脚本通常安装在/etc/init.d中,符号链接从那里到正确的目录,由控制它的实用程序使用正确的两位数。

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

这两个第一种方法在某种程度上可以互操作,就好像你修复了执行的优先级并且没有填充依赖关系一样,系统v init进程会尊重它。

修改

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

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