вторник, 4 января 2011 г.

автозагрузка sasc-ng

Создадим файл конфигурации нашего демона:
$ 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"

Все готово, перезагрузаемся и смотрим

Комментариев нет: