Назад | Перейти на главную страницу

lockfile-touch прерывание с перерывами

У меня проблемы с небольшим скриптом, который я использую, чтобы убедиться, что скрипт не запускается дважды.

Я уже довольно давно использую это без особых проблем, но у меня возникают проблемы на сервере, который я только что обновил с Ubuntu 15.04 до Ubuntu 15.10, поэтому я думаю, что там что-то есть.

Код, который я использую, выглядит так:

# locking; make sure we are alone
lockfile-create /var/lock/mylockfile --retry 3 --quiet
result=$?
if [ ${result} -gt 0 ]
then
    # allready running; bye!
    exit 2
fi
lockfile-touch /var/lock/mylockfile &
lockfiletouch="$!"
trap "{ kill ${lockfiletouch}; lockfile-remove /var/lock/mylockfile; }" EXIT

Однако теперь это приводит к иногда в следующей ошибке:

/usr/local/scripts/myscript.sh: line 1:  8173 Terminated              lockfile-touch /var/lock/mylockfile

Это происходит менее чем в 1% случаев запуска скрипта, но он выполняется довольно часто.

Может ли кто-нибудь дать мне понять, что может быть причиной этого и как я могу предотвратить эту ошибку?

В соответствии с этим, ошибка заключается в том, что ваш скрипт просто убивает прикосновение к файлу блокировки.

# bash -x  lock.sh
+ lockfile-create /var/lock/mylockfile --retry 3 --quiet
+ result=0
+ '[' 0 -gt 0 ']'
+ lockfiletouch=3902
+ trap '{ kill 3902; lockfile-remove /var/lock/mylockfile; }' EXIT
+ kill 3902
+ lockfile-remove /var/lock/mylockfile
lock.sh: line 1:  3902 Terminated              lockfile-touch /var/lock/mylockfile