Назад | Перейти на главную страницу

Как запустить демон во время загрузки после того, как все остальные службы будут готовы

Я разработал демон в Linux. Однако он работает правильно, когда я устанавливаю этот сценарий для запуска во время загрузки, он конфликтует с другой службой, поэтому мне нужно запустить его после запуска всех служб.

Как я могу добавить задержку в сценарий оболочки init.d или внутри самой службы, не влияя на загрузку системы?

Это Debian Linux.

С уважением, Хайме

один из возможных вариантов - включить такой фрагмент кода в ваш сценарий init.d.

конечно вам нужно изменить тестовую часть lsmod | grep -qw module_name чтобы убедиться, что аппаратный модуль полностью инициализирован.

также отрегулируйте запуск вашего демона, в зависимости от того, демонизирует он себя или нет.

убедитесь, что первый сценарий инициализации /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