Я хочу написать сценарий запуска для 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 =, но я бы предпочел просто остановить ее, не указывая правильный экземпляр.
Есть ли лучший способ сделать это в выскочке?
Я думаю, что лучший способ сделать это состоит в том, чтобы иметь сценарий, который будет управлять 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