SHLOCK(8) InterNetNews Documentation SHLOCK(8)

shlock - ایجاد فایل‌های قفل برای اسکریپت‌های پوسته

shlock [-b|-c|-u] -f name -p pid

دستور shlock تلاش می‌کند تا یک فایل قفل با نام name ایجاد کرده و شناسه فرایند pid را در آن بنویسد. اگر فایل از قبل وجود داشته باشد، shlock شناسه فرایند را از فایل خوانده و بررسی می‌کند که آیا فرایند در حال حاضر در حال اجرا است یا خیر. اگر فرایند وجود داشته باشد، فایل ایجاد نخواهد شد. در صورتی که shlock بتواند فایل قفل را بسازد با وضعیت صفر، و اگر فایل به یک فرایند در حال حاضر فعال اشاره کند، با وضعیتی غیرصفر خارج می‌شود.

می‌توان از طریق ماژول "INN::Utils::Shlock" از یک پوشش پرل (Perl wrapper) برای shlock استفاده کرد.

شناسه‌های فرایند به‌طور معمول در قالب اسکی (ASCII) خوانده و نوشته می‌شوند. اگر گزینه -b به‌کار رود، شناسه‌ها به صورت یک عدد صحیح باینری (binary int) نوشته خواهند شد.
اگر گزینه -c استفاده شود، shlock فایل قفل را ایجاد نمی‌کند، بلکه در عوض از فایل برای بررسی اینکه آیا قفل توسط برنامه دیگری نگه‌داشته شده است یا خیر استفاده خواهد کرد. اگر قفل معتبر باشد (فرایند هنوز فعال باشد)، برنامه با وضعیت غیرصفر خارج می‌شود؛ اگر قفل معتبر نباشد (یعنی فراخوانی shlock بدون این گزینه موفق می‌بود)، برنامه با وضعیت صفر خارج خواهد شد.
name نام فایل قفلی است که shlock تلاش می‌کند ایجاد کند. اگر فایل از قبل وجود داشته باشد، شناسه فرایند را از فایل می‌خواند و در صورتی که این فرایند در حال حاضر فعال باشد، با وضعیتی غیرصفر خارج می‌شود.
pid شناسه فرایندی است که باید در فایل name نوشته شود.
برای سازگاری با سایر سیستم‌ها، گزینه -u به عنوان مترادفی برای -b پذیرفته می‌شود؛ چرا که قفل‌های باینری توسط بسیاری از بسته‌های UUCP استفاده می‌شوند.

مثال زیر نشان می‌دهد که چگونه می‌توان از shlock در یک اسکریپت پوسته استفاده کرد:

LOCK=<pathrun in inn.conf>/LOCK.send
trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15
if shlock -p $$ -f ${LOCK} ; then
    # Do appropriate work.
else
    echo "Locked by `cat ${LOCK}`"
fi

نوشته‌شده توسط Rich $alz <rsalz@uunet.uu.net> برای InterNetNews پس از شرحی از قفل‌گذاری HDB UUCP که توسط Peter Honeyman ارائه شد، و بهبودیافته توسط Berend Reitsma برای رفع شرایط رقابتی (race condition). تبدیل‌شده به POD توسط Julien Elie.

INN::Utils::Shlock(3pm).

2022-07-10 INN 2.7.4