2014-09-16 3 views
1

У меня есть задача Rsync с режем с удаленного сервераКак сделать блокировку файла с Башем

rsync -av [email protected]:/srv/data/ /srv/data/ 

Для того, чтобы регулярно работать и избежать сценария «Reenter» вопрос, я создать блокировку файла «in_progress» с rsync progress's pid, который указывает, продолжает ли программа работать.

lock(){ 
    echo $1 > in_progress 
} 

Используя эту функцию, чтобы судить о том, по-прежнему работает прогресс Rsync:

is_running(){ 
    pid=$(cat in_progress) 
    return ps aux | awk '{print $2}' | grep $pid 
} 

я могу получить идентификатор процесса для передачи функционировать lock с этим

$! 

я имел чтобы установить rsync progress background, чтобы получить pid rsync, поэтому я получаю это

rsync -av [email protected]:/srv/data/ /srv/data/ & 
lock $! 

но когда делается прогресс Rsync, я должен ю файл блокировка
Я попробовал этот

rsync -av [email protected]:/srv/data/ /srv/data/ && rmLock & 
lock $! 

... то кажется Идентификатор я не Идентификатор из RSync прогресса :-(

+0

возможно дубликат [Как предотвратить скрипт работает одновременно?] (Http://stackoverflow.com/questions/169964/how-to-prevent-a-script-from-running-only) – Palec

+0

Хорошо указать, что ваша проблема решена путем принятия ответа, который был полезен. – klashxx

ответ

0
(rsync -av [email protected]:/srv/data/ /srv/data/ && rmLock) & 

Также

[ -d /proc/$pid ] && … 
+0

'(rsync -av [email protected]:/srv/data// srv/data/&& rmLock) &' похоже не может получить pid rsync, но bash pid начнет команду – armnotstrong

0

Я просто найти способ решить эту проблему, используя wait

rsync -av [email protected]:/srv/data/ /srv/data/ & 
pid=$! 
lock $pid 
wait $pid 
rmLock $pid 

благодаря tijagi, я нашел более элегантный способ судить, работает ли прогресс.

2

Если вы хотите, чтобы предотвратить одновременные расстрелы, флок хорошим инструмент:

$ flock -n /path/to/lock/file -c "rsync -av [email protected]:/srv/data/ /srv/data/" & 
+0

Dumb me. Я думал, что стадо работает только на файлы. – tijagi

Смежные вопросы