#!/bin/bash
# какой флаг-файл будем ждать
FLAG_FILE="/tmp/this-is-a-flag.txt"
# файл блокировки. Признак того, что этот скрипт уже работает.
MY_NAME="$(basename $0)"
LOCKFILE="/var/lock/${MY_NAME}.lock"
# пытаемся получить эксклюзивную блокировку.
exec 123>"${LOCKFILE}" || { echo "ERROR: can not get descriptor"; exit 1; }
flock -ne 123 || { echo "Script already running. Exit."; exit; }
echo "Lock is acquired"
# файл блокировки надо удалить при завершении скрипта
set -e
function releaseLock {
flock -u 123
rm -r "${LOCKFILE}"
echo "Lock is released"
}
trap releaseLock EXIT
while true
do
# ждём появление флаг-файла
echo -n "waiting flag file... "
while [ ! -f "${FLAG_FILE}" ]; do sleep 1; done;
echo "Got it!"
#
# ТУТ ДЕЛАЕМ ЧТО НАМ НАДО
#
# удаляем флаг-файл
rm "${FLAG_FILE}"
done