如何在所有其他服务都准备就绪后在启动时启动守护进程

如何在所有其他服务都准备就绪后在启动时启动守护进程

我在 Linux 中开发了一个守护进程。它工作正常,但是,当我将该脚本设置为在启动时启动时,它会与其他服务发生冲突,因此我需要在所有服务启动后再启动它。

如何在 init.d shell 脚本或服务本身内部添加延迟而不影响系统启动?

这是 Debian Linux。

问候 Jaime

答案1

一个可能的选择是将这样的一段代码包含在你的 init.d 脚本中。

当然你需要改变测试部分lsmod | grep -qw module_name来验证硬件模块是否完全初始化。

还要调整守护进程的启动,取决于它是否正在对自身进行守护。

确保第一个 init 脚本/etc/rcX.d/S98first_daemon在你自制的守护进程启动脚本之前启动/etc/rcX.d/S99homemade_daemon

#!/bin/bash

wait_period=0
sleep_period=5
max_wait_period=30

function is_other_daemon_fully_initialized()
{
    lsmod | grep -qw module_name && return 0
    return 1
}

while true
do
    echo "Time Now: `date +%H:%M:%S`"
    echo "Sleeping for $sleep_period seconds"
    wait_period=$(($wait_period+$sleep_period))
    if [ $wait_period -gt $max_wait_period ];then
       echo "Max wait period exceeded, abort."
       exit 1
    else
       sleep $sleep_period
       is_other_daemon_fully_initialized && break
    fi
done

echo "Initialisation done in $wait_period seconds, launching second daemon."
/path/to/your/homemade/daemon

相关内容