Scroll to navigation

FLOCK(1) Корисничке наредбе FLOCK(1)

НАЗИВ

flock - управља закључавањима из скрипти шкољке

УВОД

flock [options] file|directory command [arguments]

flock [options] file|directory -c command

flock [options] 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 does not detect deadlock. See flock(2) for details.

Неки системи датотека (нпр. 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/>.

2024-11-13 util-linux 2.40.2