Если Вы хотите сделать это с помощью портативного, стандарт POSIX окружают и избегают расширений удара как массивы, необходимо использовать оценку:
$ foo1='a b c'
$ foo2='d e f'
$ a=1; eval echo \$foo$a
a b c
$ a=2; eval echo \$foo$a
d e f
Если я когда-либо волнуюсь по поводу одного cronjob, запускающегося, прежде чем другой будет закончен, я обычно создаю временный файл под /tmp
(как /tmp/lockFile_$$
) это удалено как последний шаг в первом cronjob, и просто имейте второй cronjob, запускаются с цикла на том существовании файлов, спя 5-10 секунд в каждом цикле и убегающий из цикла, после того как файл исчезает (возможно отправляющий корень электронное письмо каждые несколько повторения, таким образом, у Вас есть более легкое время, замечающее остановленные задания).
Если точка дросселирования на первой является сетевой пропускной способностью, можно попытаться играть вокруг с --compress
и --compress-level
опции к rsync.
Если узким горлом является ЦП, можно попытаться дать процессу rsync более низкое хорошее значение
Если это iowait
время, Вы могли бы рассмотреть также ionice
если Вы используете cfq на Linux или разделяете команду rsync на несколько параллельных процессов так, чтобы один процесс мог ожидать на вводе-выводе, в то время как другой передает вместо того, чтобы войти последовательный. Большинство платформ также позволяет Вам настроить функциональность ввода-вывода. На Linux во время первого cronjob Вы могли бы рассмотреть временно переключение на deadline
планировщик (для приоритизации перечитывает по записям), и временно увеличение read_ahead_kb
так как Вы вытягиваете в целых больших файлах от диска.
rsync
создает, в то время как это посреди выполнения его вещи. – Bratchley 04.06.2013, 21:06