Bug 9946 - update flock
Summary: update flock
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: util-linux (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: inger@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-09-01 14:17 MSD by ildar
Modified: 2006-12-26 13:08 MSK (History)
7 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description ildar 2006-09-01 14:17:07 MSD
Проблема:
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 Dmitry V. Levin 2006-09-01 15:00:15 MSD
flock работает в соответствии с документацией.  Не вижу проблемы.
Comment 2 Sergey Vlasov 2006-09-02 19:08:36 MSD
В текущей документации такая особенность 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 Dmitry V. Levin 2006-09-02 19:12:16 MSD
Можно обновить flock или собрать flock отдельным пакетом.
Обновлять весь util-linux существенно дольше.
Comment 4 ildar 2006-09-15 17:02:10 MSD
2 Sergey Vlasov: поставил себе, попробовал, fully satisfied. Спасибо большое за
подсказку.
2 Дмитрий: может переоткрыть с FR, чтобы не забыли?

Ильдар
Comment 5 Dmitry V. Levin 2006-09-15 17:05:06 MSD
Согласен, пусть напоминает.
Comment 6 Slava Semushin 2006-12-08 16:34:05 MSK
В 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 Dmitry V. Levin 2006-12-08 23:57:35 MSK
Fixed in 2.12r-alt2.2