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

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

安装的包/etc/init.d/ccpd是启动时运行的脚本。我希望此脚本作为所有启动脚本的最后一个运行,我该如何实现?

答案1

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

使用运行级别命令找出您的计算机处于哪个运行级别(可能是 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

答案2

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

并创建一个脚本并将其放在 /root/bin 或 /usr/local/bin 中

在该脚本中,

#!/bin/bash sleep 300
#call your service and run it in background
/usr/bin/ccpd &

启动将继续,你的程序将在 5 分钟后运行

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

相关内容