upstart bittorrent sync две конфигурации для btsync

Я хочу написать сценарий запуска для BitTorrent Sync, который запускает btsync наподобие «btsync --config day.conf» утром и перезапускает его с «btsync --config night.conf» ночью. Таким образом, я смогу ограничить скорость загрузки в файле "day.conf" и удалить все ограничения в файле "night.conf". Я хочу использовать cron для запуска btsync с правильным файлом конфигурации.

В настоящее время у меня есть в /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

Затем я могу запустить btsync с чем-то вроде:

sudo initctl start btsync CONF=btsync-day.conf

, который я мог бы поместить в / etc / crontab и это будет работать. Но я думаю, что использование инстанса не является правильным решением, так как я на самом деле не запускаю инстансы. Btsync не может быть запущен несколько экземпляров. Также, чтобы остановить работу, я должен остановить ее, используя правильную переменную CONF =, но я бы предпочел просто остановить ее, не указывая правильный экземпляр.

Есть ли лучший способ сделать это в выскочке?

1
задан 14 June 2013 в 00:47

1 ответ

Я думаю, что лучший способ сделать это состоит в том, чтобы иметь сценарий, который будет управлять btsync приложением. Сценарий будет контролировать время и перезапускать btsync приложение соответственно.

Сценарий должен быть похожим (не протестированный):

#!/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
0
ответ дан 14 June 2013 в 00:47

Другие вопросы по тегам:

Похожие вопросы: