НАЗИВ
flock - управља
закључавањима
из скрипти
шкољке
УВОД
flock [опције]
датотека|директоријум
наредба
[аргументи]
flock [опције]
датотека|директоријум
-c
наредба
flock [опције]
number
ОПИС
Ово
помагало
управља flock(2)
закључавањима
изнутар
скрипти
шкољке или
са линије
наредби.
Први и
други од
горњих
образаца
омотава
закључавање
око
извршавања
наредбе,
на начин
сличан su(1)
или newgrp(1).
Закључавају
наведену
датотеку
или
директоријум,
који је
направљен
(под
претпоставком
одговарајућих
дозвола)
ако већ не
постоји. По
основи, ако
се
закључавање
не може
одмах
добити, flock
чека док
закључавање
не буде
било
доступно.
Трећи
облик
користи
отворену
датотеку
бројем
њеног
описника
датотеке.
Видите
примере
испод о
коришћењу
истог.
ОПЦИЈЕ
-c, --command
наредба
Прослеђује
једну
наредбу,
без
аргумената,
шкољци са
-c.
-E, --conflict-exit-code
број
Коришћено
излазно
стање када
се -n опција
користи, а
сукобљавајуће
закључавање
постоји,
или се -w
опција
користи, а
временски
истек је
достигнут.
Основна
вредност
је 1. број
мора бити у
опсегу од 0
до 255.
-F, --no-fork
Не
клонира
пре
извршавања
наредбе.
Након
извршавања
процес са
гомиле се
замењује
наредбом
која
наставља
да држи
закључавање.
Ова опција
није
сагласна
са --close јер
тада не би
преостало
ништа да
држи
закључавање.
-e, -x, --exclusive
Добија
искључиво
закључавање,
које се
понекад
назива
закључавање
писања. Ово
је
основно.
-n, --nb, --nonblock
Не
успева
радије
него да
чека ако
закључавање
не може
бити одмах
задобијено.
Видите
опцију -E о
коришћеном
излазном
стању.
-o, --close
Затвара
описника
датотеке
на коме је
држано
закључавање
пре
извршавања
наредбе.
Ово је
корисно
ако
наредба
изроди
проистекли
процес
који не би
требало да
држи
закључавање.
-s, --shared
Придобија
дељено
закључавање,
понекад
звано
закључавање
читања.
-u, --unlock
Одбацује
закључавање.
Ово обично
није
потребно,
пошто се
закључавање
аутоматски
одбацује
када се
датотека
затвори.
Међутим,
може бити
захтевано
у посебним
случајевима,
на пример
ако је
запакована
група
наредбе
можда
клонирала
позадински
процес
који не би
требало да
држи
закључавање.
-w, --wait, --timeout
секунде
Не
успева ако
закључавање
не може да
се добије
за
секунде.
Децималне
разломачке
вредности
су
допуштене.
Видите
опцију -E за
коришћено
излазно
стање.
Нулти број
секунди
се тумачи
као --nonblock.
--verbose
Извештава
колико му
је било
потребно
да добије
закључавање,
или зашто
се
закључавање
не може
добити.
-h, --help
Приказује
текст
помоћи и
излази.
-V, --version
Исписује
издање и
излази.
ИЗЛАЗНО
СТАЊЕ
Наредба
користи <sysexits.h>
вредности
стања
излаза за
све, осим
када
користи од
опција -n
или -w које
извештавају
о неуспеху
прибављања
закључавања
са стањем
излаза
датим
опцијом -E,
или 1 по
основи.
Стање
излаза
које даје -E
треба да
буде у
опсегу од 0
до 255.
Када се
користи
варијанта
наредбе, и
извршава
радни
проистекли,
тада је
излазно
стање оно
наредбе
проистеклог.
БЕЛЕШКЕ
flock не
открива
застој.
Видите flock(2)
за детаље.
Неки
системи
датотека
(нпр. NFS и CIFS)
имају
ограничену
примену flock(2)
и „flock“ увек
може да не
успе. За
детаље
погледајте
flock(2), nfs(5) и mount.cifs(8). У
зависности
од опција
качења, „flock“
ту увек
може да не
успе.
ПРИМЕРИ
Знајте да
је „shell> “ у
примерима
упит
линије
наредби.
shell1> flock /tmp -c cat; shell2> flock -w .007 /tmp -c
echo; /bin/echo $?
Поставља
изричито
закључавање
на
директоријум
/tmp а друга
наредба
неће
успети.
shell1> flock -s /tmp -c cat; shell2> flock -s -w .007 /tmp
-c echo; /bin/echo $?
Поставља
дељено
закључавање
на
директоријум
/tmp а друга
наредба ће
успети.
Знајте да
покушај
добијања
изричитог
закључавања
са другом
наредбом
неће
успети.
shell> flock -x local-lock-file echo 'a b c'
Граби
изричито
закључавање
„локалне-датотеке-закључавања“
пре
покретања
„echo“ са „a b c“.
(; flock -n 9 || exit 1; # ...
наредбе
извршене
под
закључавањем
...; ) 9>/var/lock/moja-datoteka-zaključavanja
Образац
је
пригодан
унутар
скрипти
шкољке.
Режим
коришћен
за
отварање
датотеке
није важан
flock-у;
коришћење
> или >>
омогућава
датотеци
закључавања
да буде
направљена
ако већ не
постоји,
међутим,
овлашћења
писања су
потребна.
Коришћење
< захтева
да
датотека
већ
постоји
али је
потребно
само
овлашћење
писања.
[ "${FLOCKER}" != "$0" ] && exec env
FLOCKER="$0" flock -en "$0" "$0"
"$@" || :
Ово је
користан
шаблонски
код за
скрипте
шкољке.
Ставите га
на врх
скрипте
шкољке
коју
желите да
закључате
и
аутоматски
ће се
закључати
при првом
покретању.
Ако
променљива
окружења
$FLOCKER није
постављена
на скрипту
шкољке
која се
покреће,
тада
извршава flock
и граби
изричито
неблокирајуће
закључавање
(користећи
саму
скрипту
као
датотеку
закључавања)
пре него
што се
поново
изврши
помоћу
правих
аргумената.
Такође
поставља
променљиву
окружења
„FLOCKER“ на
праву
вредност
тако да се
не покреће
поново.
shell> exec 4<>/var/lock/mylockfile; shell> flock -n
4
Овај
образац је
погодан за
закључавање
датотеке
без
израђања
подпроцеса.
Шкољка
отвара
датотеку
закључавања
за читање и
писање као
описник
датотеке 4, а
затим се flock
користи за
закључавање
описника.
АУТОРИ
H. Peter Anvin <hpa@zytor.com>
АУТОРСКА
ПРАВА
Ауторска
права © 2003-2006. H. Peter Anvin.
Ово је
слободан
софтвер;
погледајте
извор за
услове
умножавања.
Нема
НИКАКВЕ
гаранције;
чак ни о
ТРЖИШНОЈ
ВРЕДНОСТИ
или
ПРИЛАГОЂЕНОСТИ
ПОСЕБНОЈ
НАМЕНИ.
ПОГЛЕДАЈТЕ
ТАКОЂЕ
flock(2)
ПРИЈАВЉИВАЊЕ
ГРЕШАКА
За
пријављивање
грешака,
користите
пратиоца
грешака на
<https://github.com/util-linux/util-linux/issues>.
ДОСТУПНОСТ
Наредба
flock је део
пакета „util-linux“
који се
може
преузети
са Архиве
Линукс
кернела
<https://www.kernel.org/pub/linux/utils/util-linux/>.