Re: Несколько вопросов вразброс
On 21.07.2012 18:18, Stanislav Maslovski wrote:
>>> Ну и тут, строго говоря, имеет место быть race condition.
>> В упор не вижу. Где?
> А вот как раз перед строчкой, которую ты удалил.
> То есть, там классический race между проверкой семафора и его
> установкой, поскольку делается это двумя *отдельными* операциями,
> а должно делаться *атомарно*.
"
pid=`cat $lockfile`
if [ -n "$pid" ]; then
echo "pid=$pid in lockfile; our pid=$$"
if ps $pid ; then
echo "Process exist; waiting"
else
.....
done
fi
echo $$>$lockfile
"
Т.е., если запущено два экземпляра, один мог получить отсутствие процесса с pid
в локфайле, затем получит тоже самое второй, если в это время произойдёт
переключение?
И, в итоге, будет две копии. А в локфайле будет pid последней, которая выполнила
echo?
Блин. Я недоглядел.
И как с этим бороться (кроме как flock)?
А блокировка в flock выполняется атомарно?
Reply to: