У меня есть скрипт, который запускается cron каждый день.

Команда запуска выглядит примерно так: flock -n /tmp/mylock.LOCK /path/to/script/script.sh

Скрипт script.sh обновляет файлы конфигурации для моего сервера и пытается перезапустить его (если он работает, он перезапускает его, если нет - запускает его). Но проблема в том, что этот сервер начинает удерживать блокировку /tmp/mylock.LOCK , который предотвращает запуск script.sh на следующий день.

Можно ли как-то запустить скрипт, чтобы перезапустить мой сервер, не получая блокировку файла в процессе?

ОС: Ubuntu 12.04

1 ответ1

0

Существует опция -o , я пропустил ее на странице руководства flock в первый раз.

Цитата из справочной страницы:

-o, --close
     Close  the file descriptor on which the lock is held before exe‐
     cuting command.  This  is  useful  if  command  spawns  a  child
     process which should not be holding the lock.

Так что он делает именно то, что мне нужно, теперь только родительский процесс flock держит блокировку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .