Bug 9946

Summary: update flock
Product: [Development] Sisyphus Reporter: ildar <ildar@altlinux.org>
Component: util-linuxAssignee: inger@altlinux.org <inger@altlinux.org>
Status: CLOSED FIXED QA Contact: qa-sisyphus@altlinux.org
Severity: normal    
Priority: P2 CC: boyarsh@altlinux.org, ldv@altlinux.org, php-coder@altlinux.org, vsu@altlinux.org
Version: unstable   
Hardware: all   
OS: Linux   

Description From 2006-09-01 14:17:07
Проблема:
flock открывает лок-файл, делает flock(2) на этот файл, потом fork-exec, после
чего спокойно выходит, надеясь, что это осовободит лок, который он сделал на
лок-файл. Однако это не так, если не все форки закончили свою работу.

Постановка задачи:
написать скрипт, запускающий pppd (или ещё что-нибудь), но который запрещал бы
запуск второй копии самого себя.

Предполагаемая реализация: через lock file и вызов /usr/bin/flock примерно так:
....
touch $LOCKFILE
if [ l$2 = lok ]; then
    main
else
    flock --timeout=0 $LOCKFILE $0 $1 ok
fi

Steps to Reproduce:
1.touch lock
2.flock lock bash -c "sleep 60 &"
3.flock lock bash -c "sleep 60 &"
Actual Results:  
command #3 exits only 60 seconds after command #2 was started

Expected Results:  
immediately
------- Comment #1 From 2006-09-01 15:00:15 -------
flock работает в соответствии с документацией.  Не вижу проблемы.
------- Comment #2 From 2006-09-02 19:08:36 -------
В текущей документации такая особенность flock(1) явно не указана.

Впрочем, в changelog util-linux 2.13-pre2
(http://freshmeat.net/projects/util-linux/?branch_id=11029&release_id=204182)
написано следующее:

- flock was replaced with flock-2.0.2 by H. Peter Anvin.

ftp://ftp.kernel.org/pub/software/utils/script/flock/ (там уже лежит 2.0.3).

У этого варианта flock опций побольше; в частности, есть и опция --close.
------- Comment #3 From 2006-09-02 19:12:16 -------
Можно обновить flock или собрать flock отдельным пакетом.
Обновлять весь util-linux существенно дольше.
------- Comment #4 From 2006-09-15 17:02:10 -------
2 Sergey Vlasov: поставил себе, попробовал, fully satisfied. Спасибо большое за
подсказку.
2 Дмитрий: может переоткрыть с FR, чтобы не забыли?

Ильдар
------- Comment #5 From 2006-09-15 17:05:06 -------
Согласен, пусть напоминает.
------- Comment #6 From 2006-12-08 16:34:05 -------
В git доступна сборка 2.12r-alt2.2, в которой flock(1) сбэкпорчен из версии
2.13-pre7 Прошу всех заинтересованных потестировать.

->
http://git.altlinux.org/people/php_coder/packages/?p=util-linux.git;a=commitdiff;h=74028c22428b1da7c7db48c69a14c48d852ff9d8;hp=119ef3de0d3514e3167d7b8e4e02437c45344a7e
------- Comment #7 From 2006-12-08 23:57:35 -------
Fixed in 2.12r-alt2.2