У меня есть сценарий (на самом деле, приложение направляющих с системой очереди заданий Sidekiq), который загружает картинки и альбомы к Flickr. Эти данные огромны в моих целях (приблизительно 100 ГБ), и загрузка является медленной из-за моей низкой интернет-скорости.
Я уже настроил сценарий для выполнения, когда Ubuntu загружается, а также иметь init.d
интерфейс для управления этим сценарием.
Теперь, так как загрузка использует всю мою пропускную способность, я хочу запустить этот скрипт только, когда интернет-соединение неактивно, т.е. сценарий должен приостановиться автоматически, когда интернет-соединение используется другими приложениями и резюме, после того как это становится неактивным снова.
Так, я хотел бы знать, существует ли способ, которым я могу контролировать свое интернет-соединение и проверку, чтобы видеть, соединены ли другие приложения онлайн. Если так, паузы сценария самостоятельно и резюме, когда соединение становится неактивным снова.
Любые указатели или справка в этом отношении ценятся.
Можно использовать/proc/net/dev для контроля сетевой активности, чего-то вроде этого:
packets() {
# Get the number of packets of eth0 device
cat /proc/net/dev | grep eth0 | cut -f5 -d' ';
}
LAST=$(packets)
while [ true ]; do
sleep 1;
PACKS=$(packets)
DIFF=$(($PACKS-$LAST));
# I consider idle less than 10 packets per second
if [ $DIFF -le 10 ]; then
echo 'Idle!';
fi
LAST=$PACKS;
done
прием здесь - то, что Вы считаете неактивными, так как нулевой трафик является невозможностью реального мира:)