如何在 Debian 中延迟启动服务?

如何在 Debian 中延迟启动服务?

因此,准确地说,我试图延迟树莓派 2 上“deluge-daemon”的启动。不知何故,USB (NTFS) 仅在 X 服务器启动后自动挂载(我在 Raspbian 中使用默认的自动挂载)(虽然我什至不需要 X 服务器)并且 Deluge 似乎比 USB 安装更早启动,并且我遇到了权限问题,因为 USB 尚未安装并且必须重新启动 Deluge 才能开始工作适当地...

所以我尝试降低优先级并仅在运行级别 5 上运行它:

sudo update-rc.d deluge-daemon start 20 5 . stop 80 0 1 6 .

这并没有什么帮助。我尝试编辑 deluge-daemon 启动脚本并添加

sleep 1m

在启动脚本的启动情况下。然后它就可以工作,并在 USB 已安装后安装,但问题是,现在每次我尝试启动 deluge-daemon 服务时,它都会变慢,所以每次我决定停止并启动该过程后都需要一分钟手动...

任何帮助,将不胜感激。必须有一种方法可以延迟启动而不影响一般启动脚本......

答案1

睡觉前可以检查一下USB是否挂载。例如:

mount | grep -q /path/to/USB/stick/mountpoint || sleep 1m

仅当未安装 USB 记忆棒时才会休眠 1 分钟。

答案2

当你说:

所以我尝试降低优先级并仅在运行级别 5 上运行它

我希望你没有降低起始编号...因为那样会相反!

数字越小,服务启动越早:rc将依次运行 的内容/etc/rcS.d/,然后运行 ​​的内容/etc/rc?.d?当前运行级别),文件夹的内容/etc/rc*是服务 initscript 的符号链接,格式S??service_name为启动脚本(其中rc将使用“start”参数执行)或K??service_name停止脚本(rc将使用“stop”参数执行)。

在 和 中S??K????执行的位置,第一个是 00,最后一个是 99。当两个或多个脚本具有相同的编号时,它们将根据服务名称的字母顺序执行。

话虽如此,如果你跑

sudo uptate-rc.d deluge-daemon start 99 5 . stop 80 0 1 6 .

或者将rc符号链接重命名/etc/rc5.d/S??deluge-daemon/etc/rc5.d/S99deluge-daemon, deluxe-daemon 将是在运行级别 5 中启动的最后一个(或最后一个)服务。如果将符号链接重命名为 ,S99Zdeluge-daemon则更有可能在启动时让它最后运行。

如果可能的话,您当然可以使用此过程尝试尽早启动此 deluge-daemon 所需的服务。

相关内容