Я пытаюсь настроить мой скрипт таким образом, чтобы
- Если некоторые данные недоступны, попробуйте получить их
- Если другой процесс уже извлекает его, подождите, пока этот процесс завершится
- Использовать данные
А с здесь Я нашел очень хороший пример стада:
exec 200>$pidfile
flock -n 200 || exit 1
pid=$$
echo $pid 1>&200
И это не удастся, если он не сможет захватить замок (флаг -n).
Можно ли предположить, что это означает, что другой файл заблокировал $pidfile
, и как я могу определить, что блокировка снята в другом процессе?
Я понимаю, что wait $pid
будет ждать, пока этот процесс не будет завершен, и поэтому, если есть какой-то способ записать, какой процесс в данный момент удерживает блокировку, или просто обнаружить разблокировку, чтобы другие процессы знали, когда данные будут доступны, тогда я думаю, это будет работать.
Есть идеи?