Как выполнить команду в течение времени в минуту / сек?

Я хочу запустить команду / скрипт, скажем, script.sh с 1:00 до 2:00 в минуту. После наблюдения того, что crontab не может решить это "в секунду", я должен был пойти с "в минуту".

По сути, мой файл server.sh занимает backup из моего database на сервере. Это делается тремя текстовыми файлами с именами tables, что создает три резервных копии archives. Эти архивы резервных копий называются как «prefixYYYYmmdd», где префикс = тяжелый / легкий / еженедельный в зависимости от типа резервной копии.

Теперь я хочу скопировать эти файлы после их сохранения на сервере. Предположим, что резервное копирование на сервере заняло 15 минут. Теперь я должен запустить скрипт copy - client.sh на моем локальном компьютере. Поскольку этот сценарий copy не знает имен файлов, только что созданных сервером, он должен работать в секунду / мин в интервале, в течение которого эти файлы создаются сервером, и захватывать этот файл.

Как использовать crontab в минуту / сек в течение этого промежутка времени?

3
задан 8 October 2012 в 13:58

3 ответа

Сначала создайте задание cron, которое начнется к 1 часу ночи.

 1 * * * /path_to_script/script.sh

В script.sh

#!/bin/bash
while true
do
find dir -mtime -1 -exec cp {} directory \;
TEST=`echo $(date +%H)`
if [ $TEST > 2 ]
then
  exit 0
fi

sleep 1
done

Измените команду find по своему усмотрению (Чтобы найти файлы, измененные недавно используйте mtime и используйте rsync, если вы хотите вернуться с удаленной машины или просто cp / mv, если она с локальной машины)

Этот сценарий проверит наличие date и, если его время превышает 2 часа ночи, он будет выйти автоматически.

Надеюсь, это поможет

0
ответ дан 8 October 2012 в 13:58

Есть несколько подходов, которые вы могли бы использовать.

  1. Заставьте скрипт зацикливаться 3600 раз со сном 1 в середине (= 1 час), запускайте его с помощью cron в любое удобное для вас время.
  2. Получите сценарий для интеллектуального поиска файлов на основе даты, а затем сделайте копию в подходящее время, например в 4 часа утра.
  3. Получите сценарий, чтобы отслеживать, когда файлы создаются на основе даты и любых других соответствующая информация. Сделайте копию, как только файлы будут готовы.

Обратите внимание, что «... сценарий копирования не знает имен только что созданных файлов ...» просто означает, что в сценарии еще нет кода. Вы сказали, что файлы с текущей датой, просто работайте с этим. например:

#!/bin/bash
FILE=$(date +"prefix%Y%m%d")
echo "The filename for today is "$FILE
0
ответ дан 8 October 2012 в 13:58

Я бы использовал rsync для такой работы. Существуют даже готовые решения . Даже во времени , обычно используемое как AFAIK для резервного копирования клиент-локальный диск, подойдет для вашего случая, если вы сможете смонтировать место назначения резервной копии через nfs / smb / ...

Делать это с помощью специального решения - это хорошо вначале, но необходимость в нем неизбежна, а специальные решения редко способны изящно адаптироваться.

0
ответ дан 8 October 2012 в 13:58

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

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