Ежедневно делаю резервные копии на S3. Я хотел бы использовать пропускную способность только с 20:00 до 8:00. Любой отдельный запуск может занять больше 12 часов, потому что наша загрузка некачественная. Я не беспокоюсь о произвольном убийстве s3cmd, потому что он правильно восстановится при следующем запуске.
Мой crontab будет выглядеть так:
# 0 20 * * * s3cmd sync FOO s3://MyBucket
Как мне проверить и остановить его, если сейчас 8 утра. В идеале я хотел бы сделать что-то вроде:
# 0 20 * * * time --limit 12H "s3cmd sync FOO s3://MyBucket"
Я использую Ubuntu Server.
Спасибо!
РЕДАКТИРОВАТЬ:
На основании ответа квантов. Для нескольких команд загрузки, я думаю, мне следует сделать?
# 0 20 * * * s3cmd sync FOO s3://MyBucket; s3cmd sync BAR s3://MyBucket; s3cmd sync FOOBAR s3://MyBucket;
# 0 8 * * * pkill s3cmd; sleep 1; pkill s3cmd; sleep 1; pkill s3cmd;
?
РЕДАКТИРОВАТЬ:
НМ, мне больше нравится тайм-аут.
РЕДАКТИРОВАТЬ:
Вот слабое место решения тайм-аута. Если у меня есть 12 резервных копий и 12-часовое окно для этого, я не обязательно необходимость выделить 1 час на резервную копию. Некоторое резервное копирование может занять 5 часов, около 20 минут. Мне все равно. Все, что меня волнует, это в 8 утра все останавливается. Я не верю, что опция тайм-аута позволяет этой гибкости адаптивно устанавливать значение тайм-аута. Опция kill, основанная на ответе квантов, должна справиться с этим.
вы, вероятно, хотите timeout
команда.
timeout 12h s3cmd sync FOO s3://MyBucket
man timeout
Чтобы получить больше информации.
по крайней мере, в Fedora он устанавливается с пакетом coreutils, который у вас должен быть по умолчанию.