如何让 init.d 中的脚本稍后运行

Pet*_*mit 6 init.d

安装的包/etc/init.d/ccpd是启动时运行的脚本。我希望这个脚本作为我所有启动脚本的最后一个运行,我怎样才能做到这一点?

Ran*_*son 5

当您的计算机启动时,它不会直接运行 init.d 脚本。相反,根据所谓的“运行级别”,它运行 /etc/rcN.d 中的脚本(其中 N 是运行级别)。您可以使用 runlevel 命令来确定当前的运行级别;我的在正常操作中返回 2。这意味着当计算机启动时,它运行 /etc/rc2.d 中的脚本。rc2.d 的内容只是 /etc/init.d 中脚本的符号链接,根据它们应该启动还是停止以及它们应该运行的顺序来命名。

使用 runlevel 命令找出您的计算机的运行级别(可能是 2),然后在 /etc/rc2.d 中查找名为 SNNccpd 的链接,该链接将是 /etc/init.d/ccpd 的符号链接,并重命名它到 S99zzzccpd - 或者让它在其他条目之后排序所需的任何东西 - 这将导致它最后运行。

有关 init.d 脚本和运行级别的更多信息,访问https://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts


Raj*_*ula -3

您可以将其作为服务从 /etc/init.d 中删除,而不是将其作为始终保持运行的服务

并制作一个脚本并将其放入 /root/bin 或 /usr/local/bin

在该脚本内,

#!/bin/bash sleep 300
#call your service and run it in background
/usr/bin/ccpd &
Run Code Online (Sandbox Code Playgroud)

启动将继续,您的内容将在 5 分钟后运行

现在最后一步是让脚本在启动时运行,将脚本添加到 /etc/fstab 或配置文件