Я разработал демон в Linux. Однако он работает правильно, когда я устанавливаю этот сценарий для запуска во время загрузки, он конфликтует с другой службой, поэтому мне нужно запустить его после запуска всех служб.
Как я могу добавить задержку в сценарий оболочки init.d или внутри самой службы, не влияя на загрузку системы?
Это Debian Linux.
С уважением Хайме
Один из возможных вариантов - включить такой фрагмент кода в ваш сценарий init.d.
конечно вам нужно изменить тестовую часть lsmod | grep -qw имя_модуля
, чтобы убедиться, что аппаратный модуль полностью инициализирован.
также регулируют запуск вашего демона, в зависимости от того, демонизирует он себя или нет.
убедитесь, что первый сценарий инициализации /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