Создадим файл конфигурации нашего демона:
$ nano /usr/bin/runsasc
#!/bin/bash
# Скрипт для автоматического поднятия SASC-NG и Драйверов
# Путь до файла sasc-ng
SASCPRG="/usr/bin/sasc-ng"
# Путь до директории с конфигами
CAMDIR="/etc/sc"
# Кол-во карт
ADAPTERS="1"
# Опции демона.
OPTIONS="-j 0:1 --cam-budget --sid-nocache -d 0xf0a --cam-dir"
# Максимальное кол-во попыток
MAXTRIES=10
# Минимальное время, до повторной попытки
MINRUN=20
## Конец секции конфигурации ##
SASCCMD="$SASCPRG $OPTIONS $CAMDIR"
KILL="/usr/bin/killall -q -TERM"
# Проверяем где необходимые драйвера, и загружены ли они
# возврщает 0 если да, и 1 если нет
function DriverLoaded()
{
grep -qse dvbloopback /proc/modules
}
# Загружет все DVBLoopback драйвера для ваших карт
function LoadDriver()
{
modprobe dvbloopback num_adapters=$ADAPTERS
sleep 5
}
# Удаляем все загруженные модули
function UnloadDriver()
{
rmmod dvbloopback
}
# Загрузка драйвера, если он ущё не был загружен:
if ! DriverLoaded; then
LoadDriver
fi
LASTRESTART=$(date +%s)
LOOPCOUNT=0
while (true) do
if [ $LOOPCOUNT -le $MAXTRIES ] || [ $MAXTRIES -eq 0 ] ; then
eval "screen -D -m -S sasc-ng $SASCCMD &"
# Дожидаемся иницализации SASC-NG
sleep 10
touch /tmp/SASC_COMPLETE
else
$KILL runsasc
fi
# Запоминаем PID процесса SASC-NG
PID=$!
# Ожидание сигнала завершения
wait $PID
# Запоминаем значение, от SASC-NG
RET=$?
if test $RET -eq 0 -o $RET -eq 2; then exit; fi
TIMEOFDEATH=$(date +%s)
RUNTIME=$((TIMEOFDEATH - LASTRESTART))
if [ $TIMEOFDEATH -le $(($LASTRESTART + $MINRUN)) ] ; then
echo "`date` SASC-NG crashed in $RUNTIME seconds. Minimum required runtime for SASC-NG is $MINRUN seconds. Killing runsasc process..."
$KILL runsasc
fi
echo "`date` Перезагрузка DVBLoopback драйверов"
$KILL sasc-ng
sleep 10
UnloadDriver
LoadDriver
LASTRESTART=$(date +%s)
LOOPCOUNT=$((LOOPCOUNT+1))
echo "`date` Перезагрузка SASC-NG $LOOPCOUNT time(s). Максимальное число попыток $MAXTRIES"
done
Снова дадим необходимые права и добавим скрипт в автозагрузку:
$ chmod +x /etc/init.d/sascd
$ update-rc.d sascd defaults 21
Конфигурация демона.
Теперь нужно настроить файл конфигурации демона:
Код: [Выделить]
$ nano /etc/default/sascc
Впишите это:
# /etc/default/sascc
# Default SASC-NG startup config
# Измените на 1 для разрешения sasc-ng's init-script
ENABLED=1
# Таймаут для создания DVBLoopback устройства(в секундах)
TIMEOUT=60
потом в Система-Параметры-Запускаемые приложения добавляем "service sascd start"
Все готово, перезагрузаемся и смотрим
Комментариев нет:
Отправить комментарий