BATCHER(8) InterNetNews Documentation BATCHER(8)

batcher - ایجاد دسته‌های مقالات برای ارسال به سایت‌های راه دور

batcher [-rv] [-a articles] [-A total-articles] [-b size] [-B total-size] [-i string] [-N batches] [-p process] [-s separator] host [input]

دستور batcher فهرستی از فایل‌ها را می‌خواند و دسته‌های خبری را برای میزبان (host) مشخص‌شده آماده می‌سازد. این دستور معمولاً برای آماده‌سازی فیدهای UUCP استفاده می‌شود، اما دسته‌های حاصل می‌توانند توسط هر برنامه‌ای که از rnews(1) برای تزریق مقالات استفاده می‌کند، به کار گرفته شوند. این دستور معمولاً توسط اسکریپتی از درون cron فراخوانی می‌شود که از shlock برای قفل کردن میزبان استفاده می‌کند و به دنبال آن از ctlinnd برای خالی کردن فایل دسته بهره می‌برد. برای رابط پیشین دستور batcher به send-uucp(8) مراجعه کنید.

دستور batcher فایل input را می‌خواند، یا در صورت مشخص نشدن هیچ فایلی، از ورودی استاندارد می‌خواند. اگر input یک نام فایل نسبی باشد، فرض می‌شود در pathoutgoing تنظیم‌شده در inn.conf قرار دارد. خطوط خالی و خطوطی که با علامت پوند ("#") آغاز می‌شوند نادیده گرفته می‌شوند. تمام خطوط دیگر در ورودی باید از یک یا دو فیلد تشکیل شده باشند که با یک فاصله منفرد از هم جدا شده‌اند. فیلد اول توکن API ذخیره‌سازی یک مقاله است. فیلد دوم، در صورت وجود، اندازه مقاله را بر حسب بایت مشخص می‌کند.

به‌طور پیش‌فرض، دسته‌ها در خروجی استاندارد نوشته می‌شوند (که اگر بیش از یک دسته خروجی داده شود چندان کاربردی نیست)، اما گزینه -p را ببینید.

این فلگ تعداد مقالات گنجانده‌شده در هر دسته را محدود می‌کند. پیش‌فرض بدون محدودیت است. هنگامی که مجموع بایت‌ها یا تعداد مقالات نوشته‌شده از حدود تعیین‌شده فراتر رود، یک دسته جدید آغاز خواهد شد.
تعداد کل مقالات نوشته‌شده برای همه دسته‌ها را محدود می‌کند. به محض اینکه تعداد کل مقالات نوشته‌شده در دسته‌ها به total-articles برسد یا از آن بیشتر شود، تمام مقالات بعدی در ورودی به تعویق خواهند افتاد. پیش‌فرض بدون محدودیت است.
این فلگ محدودیت اندازه هر دسته را تعیین می‌کند؛ به محض اینکه حداقل این مقدار داده نوشته شد، دسته جدیدی شروع خواهد شد. اندازه پیش‌فرض 60 KB است. استفاده از "-b 0"; امکان نامحدود بودن اندازه دسته‌ها را فراهم می‌کند.
تعداد کل بایت‌های نوشته‌شده برای تمام دسته‌ها را محدود می‌کند. به محض اینکه مجموع بایت‌های نوشته‌شده در دسته‌ها به total-size برسد یا از آن بیشتر شود، تمام مقالات بعدی در ورودی به تعویق خواهند افتاد. پیش‌فرض بدون محدودیت است.
یک دسته با یک خط شناسایی آغاز می‌شود تا روش بازگشایی که باید در مقصد استفاده شود را مشخص کند. هنگام استفاده از این فلگ، string به همراه یک خط جدید در ابتدای هر دسته خروجی داده می‌شود. حالت پیش‌فرض این است که هیچ رشته اولیه‌ای وجود نداشته باشد (با این فرض که پردازشگر مشخص‌شده با فلگ -p یا پردازشی دیگر در ادامه، خط مناسب را اضافه خواهد کرد).
تعداد کل دسته‌های نوشته‌شده را محدود می‌کند. به محض اینکه تعداد دسته‌های نوشته‌شده به batches برسد یا از آن فراتر رود، تمام مقالات بعدی در ورودی به تعویق خواهند افتاد. پیش‌فرض بدون محدودیت است.
به‌طور پیش‌فرض، دسته‌ها در خروجی استاندارد نوشته می‌شوند، که هنگام ایجاد بیش از یک دسته خروجی مفید نیست. در صورت مشخص شدن این گزینه، هر دسته از طریق یک لوله (pipe) به دستور پوسته process فرستاده می‌شود. آرگومان process باید یک رشته با قالب sprintf(3) باشد که می‌تواند دارای یک پارامتر "%s" باشد که با نام میزبان جایگزین خواهد شد.

یک مقدار متداول عبارت است از:

( echo '#! gunbatch' ; exec gzip -c ) | uux - -r -z %s!rnews

که دسته‌های فشرده‌شده با gzip را ایجاد کرده و آن‌ها را به uux تحویل می‌دهد.

به‌طور پیش‌فرض، batcher خطاها را به pathlog/errlog گزارش می‌دهد. برای لغو این تغییر مسیر و گزارش خطاها به خروجی خطای استاندارد، از فلگ -r استفاده کنید.
هر مقاله در یک دسته با یک خط جداکننده شروع می‌شود که اندازه مقاله را مشخص می‌کند. separator باید یک رشته با قالب sprintf(3) باشد که می‌تواند شامل یک "%ld" در رشته باشد که با اندازه مقاله جایگزین خواهد شد. اگر جداکننده خالی نباشد، هنگام اضافه شدن به ابتدای هر مقاله، یک خط جدید نیز به آن پیوست می‌شود.

جداکننده پیش‌فرض به این صورت است:

#! rnews %ld

و این مقدار به‌ندرت باید تغییر کند.

هنگام خروج، batcher آمار را از طریق syslog گزارش می‌دهد. با این فلگ، آمار در خروجی استاندارد نیز چاپ خواهد شد.

اگر ورودی به پایان برسد و تمام دسته‌ها با موفقیت ایجاد شوند، batcher با وضعیت صفر خارج خواهد شد.

اگر هر یک از محدودیت‌های تعیین‌شده با فلگ‌های -A، -B یا -N حاصل شود، یا اگر خطایی در نوشتن یک دسته رخ دهد، batcher تلاش می‌کند تا ورودی باقی‌مانده را با کپی کردن در یک فایل به شرح زیر ذخیره کند:

  • اگر نام فایل ورودی مشخص نشده باشد، ورودی باقی‌مانده در pathoutgoing/host کپی خواهد شد.
  • اگر نام فایل ورودی داده شده باشد، ورودی باقی‌مانده در یک فایل موقت که با اضافه کردن ".bch" به انتهای input نام‌گذاری شده (و در صورتی که input یک مسیر کامل نباشد، با افزودن pathoutgoing تکمیل شده است) کپی خواهد شد. در صورت موفقیت‌آمیز بودن این کار، batcher سپس تلاش می‌کند نام این فایل موقت را به input تغییر دهد (بنابراین input را با رونوشتی از خودش که تمام خطوط مقالات با موفقیت دسته‌بندی‌شده از آن حذف شده‌اند، جایگزین می‌کند).

با دریافت سیگنال وقفه یا خاتمه، batcher دسته‌بندی مقاله جاری را به پایان می‌رساند، دسته را می‌بندد و سپس فایل دسته را همان‌طور که در بالا شرح داده شد بازنویسی می‌کند.

نوشته‌شده توسط Rich $alz <rsalz@uunet.uu.net> برای InterNetNews. بازنویسی‌شده توسط Russ Allbery <eagle@eyrie.org> در POD.

ctlinnd(8)، inn.conf(5)، newsfeeds(5)، rnews(1)، send-uucp(8)، shlock(8).

2025-05-09 INN 2.7.4