'\" t .\" Title: flock .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-05-18 .\" Manual: أوامر المستخدم .\" Source: util-linux 2.42.1 .\" Language: English .\" .TH "FLOCK" "1" "2026-05-18" "util\-linux 2.42.1" "أوامر المستخدم" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "الاسم" flock \- إدارة الأقفال من سكربتات الصدفة .SH "موجز" .sp \fBflock\fP [خيارات] \fIملف\fP|\fI‎دليل\fP \fI‎أمر\fP [\fI‎وسائط\fP] .sp \fBflock\fP [خيارات] \fIملف\fP|\fI‎دليل\fP \fB\-c\fP \fIأمر\fP .sp \fBflock\fP [خيارات] \fIرقم\fP .SH "الوصف" .sp تدير هذه الأداة أقفال \fBflock\fP(2) من داخل سكربتات الصدفة أو من سطر الأوامر. .sp الصيغتان الأولى والثانية أعلاه تغلّف القفل حول تنفيذ \fIأمر\fP ما، بطريقة مشابهة لـ \fBsu\fP(1) أو \fBnewgrp\fP(1). هما تقفلان \fIملفاً\fP أو \fIدليلاً\fP محدداً، والذي يُنشأ (بافتراض الأذونات المناسبة) إذا لم يكن موجوداً بالفعل. مبدئياً، إذا تعذر الحصول على القفل فوراً، ينتظر \fBflock\fP حتى يصبح القفل متاحاً. .sp تستخدم الصيغة الثالثة ملفاً مفتوحاً بواسطة \fIرقم\fP واصف الملف الخاص به. انظر الأمثلة أدناه لمعرفة كيفية استخدام ذلك. .SH "الخيارات" .sp \fB\-c\fP، \fB\-\-command\fP \fIأمر\fP .RS 4 مرّر \fIأمراً\fP واحداً، دون وسائط، إلى الصدفة باستخدام \fB\-c\fP. .RE .sp \fB\-E\fP، \fB\-\-conflict\-exit\-code\fP \fIرقم\fP .RS 4 حالة الخروج المستخدمة عند استخدام الخيار \fB\-n\fP ووجود قفل متعارض، أو عند استخدام الخيار \fB\-w\fP وانتهاء المهلة. القيمة المبدئية هي \fB1\fP. يجب أن يكون الـ \fIرقم\fP في النطاق من 0 إلى 255. .RE .sp \fB\-F\fP، \fB\-\-no\-fork\fP .RS 4 لا تقم بالتفريع (fork) قبل تنفيذ الـ \fIأمر\fP. عند التنفيذ، تُستبدل عملية flock بواسطة الـ \fIأمر\fP الذي يستمر في الاحتفاظ بالقفل. هذا الخيار غير متوافق مع \fB\-\-close\fP لأنه لولا ذلك لن يتبقى شيء للاحتفاظ بالقفل. .RE .sp \fB\-e\fP، \fB\-x\fP، \fB\-\-exclusive\fP .RS 4 الحصول على قفل حصري، يسمى أحياناً قفل كتابة. هذا هو المبدئي. .RE .sp \fB\-n\fP، \fB\-\-nb\fP، \fB\-\-nonblocking\fP .RS 4 اخفق بدلاً من الانتظار إذا تعذر الحصول على القفل فوراً. انظر الخيار \fB\-E\fP لمعرفة حالة الخروج المستخدمة. .RE .sp \fB\-o\fP، \fB\-\-close\fP .RS 4 أغلق واصف الملف الذي يُحتفظ بالقفل عليه قبل تنفيذ الـ \fIأمر\fP. هذا مفيد إذا قام الـ \fIأمر\fP بتوليد عملية ابنة لا ينبغي لها الاحتفاظ بالقفل. .RE .sp \fB\-s\fP، \fB\-\-shared\fP .RS 4 الحصول على قفل مشترك، يسمى أحياناً قفل قراءة. .RE .sp \fB\-u\fP، \fB\-\-unlock\fP .RS 4 تخلَّ عن قفل. لا يُطلب هذا عادةً، بما أن القفل يُترك آلياً عند إغلاق الملف. ومع ذلك، قد يكون مطلوباً في حالات خاصة، على سبيل المثال إذا كانت مجموعة الأوامر المضمنة قد فرّعت عملية خلفية لا ينبغي لها الاحتفاظ بالقفل. .RE .sp \fB\-w\fP، \fB\-\-wait\fP، \fB\-\-timeout\fP \fIثوانٍ\fP .RS 4 اخفق إذا تعذر الحصول على القفل خلال \fIثوانٍ\fP. القيم العشرية الكسرية مسموح بها. انظر الخيار \fB\-E\fP لمعرفة حالة الخروج المستخدمة. تُفسر القيمة صفر للـ \fIثوانٍ\fP على أنها \fB\-\-nonblock\fP. .RE .sp \fB\-\-fcntl\fP .RS 4 بدلاً من \fBflock\fP(2)، طبق قفل وصف ملف مفتوح عبر \fBfcntl\fP(2) (أي باستخدام الأوامر \fBF_OFD_SETLK\fP (غير حاجب) أو \fBF_OFD_SETLKW\fP (حاجب)). هذه الأقفال مستقلة عن تلك المطبقة عبر \fBflock\fP(2)، لكنها على عكس أقفال POSIX \fBfcntl\fP(2) التقليدية (\fBF_SETLK\fP و \fBF_SETLKW\fP)، تمتلك دلالات مطابقة لدلالات \fBflock\fP(2). .sp هذا متاح فقط في إصدارات النواة >= 3.15. .RE .sp \fB\-\-start\fP \fIإزاحة\fP .RS 4 إزاحة البداية للقفل. هذا الخيار يتضمن \fB\-\-fcntl\fP. .RE .sp \fB\-\-length\fP \fIرقم\fP .RS 4 عدد البايتات المراد قفلها. هذا الخيار يتضمن \fB\-\-fcntl\fP. .RE .sp \fB\-\-verbose\fP .RS 4 أبلغ عن الوقت المستغرق للحصول على القفل، أو عن سبب عدم إمكانية الحصول عليه. .RE .sp \fB\-h\fP، \fB\-\-help\fP .RS 4 اعرض نص المساعدة ثم اخرج. .RE .sp \fB\-V\fP، \fB\-\-version\fP .RS 4 اعرض الإصدار واخرج. .RE .SH "حالة الخروج" .sp يستخدم الأمر قيم حالة الخروج من لكل شيء، باستثناء عند استخدام أي من الخيارين \fB\-n\fP أو \fB\-w\fP اللذين يبلغان عن فشل في الحصول على القفل بحالة خروج يعطيها الخيار \fB\-E\fP، أو 1 مبدئياً. يجب أن تكون حالة الخروج المعطاة بواسطة \fB\-E\fP في النطاق من 0 إلى 255. .sp عند استخدام متغير \fIأمر\fP، وإذا نجح تنفيذ الابن، تكون حالة الخروج هي حالة أمر الابن. .SH "ملاحظات" .sp لا يكشف \fBflock\fP عن حالة الاستعصاء (deadlock). انظر \fBflock\fP(2) للتفاصيل. .sp تمتلك بعض أنظمة الملفات (مثلاً NFS و CIFS) تطبيقاً محدوداً لـ \fBflock\fP(2) وقد يفشل flock دائماً. للتفاصيل انظر \fBflock\fP(2) و \fBnfs\fP(5) و \fBmount.cifs\fP(8). اعتماداً على خيارات الوصل، قد يفشل flock دائماً هناك. .SH "أمثلة" .sp لاحظ أن "shell> " في الأمثلة هي محث سطر الأوامر. .sp shell1> flock /tmp \-c cat; shell2> flock \-w .007 /tmp \-c echo; /bin/echo $? .RS 4 يُعيّن قفل حصري للدليل \fI/tmp\fP وسيفشل الأمر الثاني. .RE .sp shell1> flock \-s /tmp \-c cat; shell2> flock \-s \-w .007 /tmp \-c echo; /bin/echo $? .RS 4 يُعيّن قفل مشترك للدليل \fI/tmp\fP ولن يفشل الأمر الثاني. لاحظ أن محاولة الحصول على قفل حصري بالأمر الثاني ستفشل. .RE .sp shell> flock \-x local\-lock\-file echo \*(Aqa b c\*(Aq .RS 4 الاستحواذ على القفل الحصري "local\-lock\-file" قبل تشغيل echo مع \*(Aqa b c\*(Aq. .RE .sp (; flock \-n 9 || exit 1; # .\|.\|. commands executed under lock .\|.\|.; ) 9>/var/lock/mylockfile .RS 4 هذه الصيغة ملائمة داخل سكريبتات الصدفة. لا يهم الوضع المستخدم لفتح الملف بالنسبة لـ \fBflock\fP؛ إذ يسمح استخدام \fI>\fP أو \fI>>\fP بإنشاء ملف القفل إذا لم يكن موجودًا بالفعل، ومع ذلك، فإن إذن الكتابة مطلوب. أما استخدام \fI<\fP فيتطلب وجود الملف مسبقًا ولكن يُطلب إذن القراءة فقط. .RE .sp [ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock \-en "$0" "$0" "$@" || : .RS 4 هذه شيفرة نمطية مفيدة لسكريبتات الصدفة. ضعها في الجزء العلوي من سكريبت الصدفة الذي تريد قفله وسيُقفل نفسه آليًا عند التشغيل الأول. إذا لم يُضبط متغير البيئة \fB$FLOCKER\fP على سكريبت الصدفة الذي يجري تشغيله، فسيُنفذ \fBflock\fP ويستحوذ على قفل حصري غير حاجب (باستخدام السكريبت نفسه كملف قفل) قبل إعادة تنفيذ نفسه بالوسائط الصحيحة. كما يضبط متغير البيئة \fBFLOCKER\fP على القيمة الصحيحة حتى لا يعمل مرة أخرى. .RE .sp shell> exec 4<>/var/lock/mylockfile; shell> flock \-n 4 .RS 4 هذه الصيغة ملائمة لقفل ملف دون إنشاء عملية فرعية. تفتح الصدفة ملف القفل للقراءة والكتابة كواصف ملف 4، ثم يُستخدم \fBflock\fP لقفل الواصف. .RE .SH "المؤلفين" .sp .MTO "hpa\(atzytor.com" "H. Peter Anvin" "" .SH "حقوق النسخ" .sp حقوق النشر © 2003\-2006 H. Peter Anvin. هذا برمجيات حرة؛ انظر المصدر لشروط النسخ. لا يوجد أي ضمان؛ ولا حتى ضمان القابلية للتسويق أو الملاءمة لغرض معين. .SH "انظر أيضاً" .sp \fBflock\fP(2)، \fBfcntl\fP(2) .SH "التبليغ عن الأخطاء" .sp لتقارير العِلل، استخدم \c .URL "https://github.com/util\-linux/util\-linux/issues" "مُتتبع المشكلات" "." .SH "التوفر" .sp الأمر \fBflock\fP جزء من حزمة util\-linux التي يمكن تنزيلها من \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "أرشيف نواة لينكس" "."