У меня проблемы с небольшим скриптом, который я использую, чтобы убедиться, что скрипт не запускается дважды.
Я уже довольно давно использую это без особых проблем, но у меня возникают проблемы на сервере, который я только что обновил с 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