upstart bittorrent sync duas configurações para btsync

1

Eu quero escrever um script upstart para o BitTorrent Sync que inicie o btsync como "btsync --config day.conf" de manhã e reinicie-o com "btsync --config night.conf" à noite. Dessa forma, eu seria capaz de limitar a taxa de upload no arquivo "day.conf" e remover quaisquer limites no arquivo "night.conf". Eu quero usar o cron para iniciar o btsync com o arquivo de configuração correto.

Eu tenho atualmente em /etc/init/btsync.conf

setuid patrick
setgid patrick

start on runlevel [2345]
stop on runlevel [016]

expect fork

instance $CONF

chdir /home/patrick/programs/btsync

exec ./btsync --config $CONF

Eu posso então iniciar o btsync com algo como:

sudo initctl start btsync CONF=btsync-day.conf

que eu poderia colocar em / etc / crontab e funcionaria. Mas acho que usar a sub-rotina da instância não é a coisa certa a fazer, pois não estou executando instâncias realmente. Btsync não pode estar executando várias instâncias. Também para interromper o trabalho, eu tenho que pará-lo usando a variável correta CONF =, mas eu prefiro ser capaz de pará-lo sem precisar especificar a instância correta.

Existe uma maneira melhor de fazer isso no upstart?

    
por patsee 13.06.2013 / 22:47

1 resposta

0

Acho que a melhor maneira de fazer isso é ter um script que gerencie o aplicativo btsync. O script irá monitorar a hora e reiniciar o aplicativo btsync de acordo.

O script deve ser parecido com (não testado):

#! / bin / bash

SUNRISE="06:00"
SUNSET="19:00"

RUNDIR='basename "$0"'
PIDFILE="${RUNDIR}/.sync/sync.pid"
CONFWFILE="${RUNDIR}/.btsync_safe.confw"
CONFDAY="${RUNDIR}/btday.conf"
CONFNIGHT="${RUNDIR}/btnight.conf"

function start_bt
{
   start-stop-daemon --chdir "$RUNDIR" --pidfile "$PIDFILE" --start --exec ./btsync -- -c $1
   echo "$1" > "$CONFWFILE"
}

function stop_bt
{
   start-stop-daemon --pidfile "$PIDFILE" --stop
}

function which_conf
{
   curtime='date +%H:%M'
   [ $curtime > "$SUNRISE"  && $curtime < "$SUNSET" ] && echo "$CONFDAY" || echo "$CONFNIGHT"
}

trap "stop_bt" EXIT

chdir $RUNDIR
for ((;;))
do
   sleep 60
   [ 'cat "$CONFWFILE"' == 'which_conf' ]  || stop_bt
   kill -0 '$PIDFILE' || start_bt 'which_conf'
done
    
por AspiringTycoon 07.12.2013 / 12:24