NEWS.DAILY(8) InterNetNews Documentation NEWS.DAILY(8)

news.daily - اسکریپت نگهداری و پاکسازی روزانه سرور مقالات INN

news.daily [delayrm] [expctl=path] [expdir=path] [expireover] [expireoverflags=args] [flags=args] [lowmark] [mailto=address] [noexpire] [noexpireover] [noexplog] [nologs] [nomail] [noprocbatch] [norenumber] [norm] [norotate] [nostat] [notdaily] [postexec=program] [procbatchdir=path] [tmpdir=path] [/path/to/a/program]

دستور news.daily تعدادی از وظایف مهم مدیریتی یوزنت (Usenet) را انجام می‌دهد. این وظایف شامل موارد زیر است:

  • تولید گزارش وضعیت با استفاده از innstat؛
  • حذف مقالات و اخبار قدیمی (با استفاده از expirerm در صورتی که کلیدواژه delayrm مشخص شده باشد)؛
  • پاکسازی پایگاه داده خلاصه مقالات (overview) با expireover (اگر کلیدواژه همنام آن مشخص شده باشد یا گزینه enableoverview در inn.conf برابر true باشد)؛
  • پردازش فایل‌های لاگ و چرخاندن فایل‌های لاگ بایگانی‌شده با scanlogs؛
  • پردازش فایل‌های رهاشده innfeed با استفاده از procbatch؛
  • پردازش پیام‌های ذخیره‌شده در صف (spooled) با اجرای rnews همراه با پرچم -U؛
  • شماره‌گذاری مجدد فایل active با استفاده از ctlinnd؛
  • بازسازی فایل history با استفاده از expire؛
  • حذف هرگونه فایل سوکت قدیمی موجود در دایرکتوری pathrun؛
  • جمع‌آوری تمام خروجی‌ها و ارسال آن‌ها از طریق ایمیل.

لطفاً توجه داشته باشید که این برنامه باید تحت حساب کاربری مدیر اخبار (معمولاً "news") اجرا شود، نه کاربر ریشه (root). به‌طور پیش‌فرض، news.daily تمام وظایف خود را انجام داده و خروجی را برای مدیر اخبار ایمیل می‌کند؛ کاربری که با گزینه --with-news-master در زمان پیکربندی (configure) مشخص شده است (که به‌طور پیش‌فرض "usenet" است). شما همچنین می‌توانید این رفتار را با استفاده از کلیدواژه mailto تغییر دهید.

با تعیین کلیدواژه‌ها در خط فرمان، امکان تغییر وظایف اجراشده و همچنین تغییر آرگومان‌های ارسالی به expire(8) و expireover(8) وجود دارد. news.daily باید روزی یک بار، معمولاً از طریق cron(8) اجرا شود. از آنجا که اجرای آن سرعت سرور را کاهش می‌دهد، باید در زمان‌های کم‌مصرف سرور، مانند نیمه‌شب اجرا گردد. به عنوان مثال، برای اجرای آن در ساعت ۳ بامداد، خط زیر را به فایل crontab کاربر news اضافه کنید:

0 3 * * * <pathbin in inn.conf>/news.daily expireover lowmark

اگر از هر یک از روش‌های ذخیره‌سازی غیر از CNFS استفاده می‌کنید، کلیدواژه delayrm را به لیست گزینه‌های فوق برای news.daily اضافه کنید.

این برنامه می‌تواند دفعات بیشتری نیز اجرا شود، اما چنین اجراهایی باید حداقل از کلیدواژه norotate (یا شاید کلیدواژه notdaily) استفاده کنند تا از پردازش و چرخاندن بیش از حد سریع فایل‌های لاگ جلوگیری شود. برنامه shlock(8) برای جلوگیری از اجراهای همزمان به کار گرفته می‌شود.

برنامه‌ای که با مسیر مشخص‌شده /path/to/a/program تعیین می‌شود، دقیقاً قبل از انجام هرگونه عملیات انقضا (expiration) اجرا می‌گردد. کاربرد معمول آن تعیین یک برنامه انقضای جایگزین و استفاده از کلیدواژه noexpire است. می‌توان چندین برنامه را مشخص کرد؛ این برنامه‌ها به ترتیب فراخوانی خواهند شد.

کلیدواژه‌های زیر را می‌توان به کار برد:

هنگام فراخوانی expire و expireover، از پرچم -z استفاده می‌کند. نام مقالاتی که باید حذف شوند در یک فایل موقت نوشته شده و سپس پس از انقضا با فراخوانی expirerm (که خود fastrm را فراخوانی می‌کند) تغییر نام داده می‌شوند.
فایلی را که باید به عنوان فایل expire.ctl برای expire استفاده شود مشخص می‌کند.
به‌طور پیش‌فرض، expire فایل جدید history و پایگاه داده را در همان دایرکتوری فایل‌های فعلی می‌سازد. استفاده از این کلیدواژه مسیر متفاوتی را برای ساخت فایل‌های جدید تعیین می‌کند (با ارسال پرچم -d به expire) که پس از پایان کار به محل مناسب منتقل خواهند شد.
برنامه expireover پس از انقضا فراخوانی می‌شود تا پایگاه داده بررسی اجمالی (overview) را پاکسازی کند. اگر هیچ داده بررسی اجمالی ایجاد نشود، به کلیدواژه expireover نیازی نیست. این حالت زمانی است که سرور فقط برای تغذیه‌کننده‌ها (feeders و بدون reader) کار می‌کند. به‌طور پیش‌فرض، expireover توسط news.daily فراخوانی نمی‌شود مگر اینکه enableoverview در inn.conf روی true تنظیم شده باشد.
در صورت استفاده از کلیدواژه expireover، می‌توان از این کلیدواژه برای مشخص کردن پرچم‌هایی که باید به expireover ارسال شوند استفاده کرد. اگر کلیدواژه delayrm به کار رفته باشد، مقدار پیش‌فرض -z و فهرست فایل‌های حذف‌شده است؛ در غیر این صورت، مقدار پیش‌فرض -s خواهد بود.
به‌طور پیش‌فرض، expire با آرگومان -v1 فراخوانی می‌شود. استفاده از این کلیدواژه آرگومان‌ها را به موارد مشخص‌شده تغییر می‌دهد. در صورتی که به چندین آرگومان نیاز است، دقت کنید که از علامت نقل‌قول (کوتیشن) استفاده نمایید. در صورت استفاده از کلیدواژه noexpire، این کلیدواژه هیچ اثری نخواهد داشت.
اگر کلیدواژه lowmark استفاده شود، برای شماره‌گذاری مجدد active از دستور "ctlinnd lowmark" استفاده می‌شود. عملیات عادی "ctlinnd renumber" زمان زیادی می‌برد. با کلیدواژه lowmark، این عملیات زمان کمتری خواهد برد. در صورت استفاده از کلیدواژه lowmark، نیازی به کلیدواژه norenumber نیست چرا که news.daily آن را به‌طور ضمنی مشخص می‌کند.

اگر کلیدواژه lowmark به news.daily داده شود، کلیدواژه expireover نیز باید حتماً داده شود؛ در غیر این صورت، این نوع شماره‌گذاری مجدد اعمال نخواهد شد.

به‌طور پیش‌فرض، news.daily گزارش را به نشانی newsmaster که با --with-news-master در زمان پیکربندی تعیین شده ایمیل می‌کند. با کلیدواژه mailto می‌توان نشانی متفاوتی را برای ارسال ایمیل گزارش مشخص کرد. توجه داشته باشید در صورتی که کلیدواژه nomail نیز مشخص شده باشد، استفاده از این کلیدواژه هیچ اثری ندارد.
به‌طور پیش‌فرض، expire برای حذف مقالات قدیمی اخبار فراخوانی می‌شود. استفاده از این کلیدواژه این عملکرد را غیرفعال می‌کند.
به‌طور پیش‌فرض، اگر enableoverview در inn.conf تنظیم شده باشد، expireover برای حذف پایگاه داده قدیمی overview فراخوانی می‌شود. استفاده از این کلیدواژه این عملکرد را غیرفعال می‌کند.
برنامه expire به‌طور معمول اطلاعات را به pathlog/expire.log اضافه می‌کند (ببینید: newslog(5)). استفاده از این کلیدواژه باعث می‌شود که خروجی expire به عنوان بخشی از خروجی news.daily مدیریت شود. اگر کلیدواژه noexpire استفاده شده باشد، این کلیدواژه هیچ اثری نخواهد داشت.
پس از پایان انقضا، scanlogs برای پردازش فایل‌های لاگ فراخوانی می‌شود. استفاده از این کلیدواژه تمام عملکردهای پردازش لاگ را غیرفعال می‌کند.
به‌طور معمول news.daily یک پیام ایمیل حاوی نتایج برای مدیر ارسال می‌کند. استفاده از این کلیدواژه باعث می‌شود که این پیام به جای ایمیل، به stdout و stderr ارسال شود. معمولاً خروجی‌های stdout و stderr تمام ابزارهای فراخوانی‌شده توسط اسکریپت به یک فایل هدایت می‌شوند. اگر این فایل خالی باشد، هیچ پیامی ارسال نمی‌شود.
این کلیدواژه اجرای procbatch روی فایل‌های رهاشده (dropped) innfeed که در دایرکتوری spool آن تولید شده‌اند را غیرفعال می‌کند. این فایل‌ها شامل فهرستی از مقالاتی هستند که به درستی به همتایان (peers) ارسال نشده‌اند. به‌طور پیش‌فرض، این فایل‌ها پردازش شده و سپس حذف می‌شوند.
این کلیدواژه عملیات "ctlinnd renumber" را غیرفعال می‌کند. به‌طور معمول، نشانه‌های حداقل (low water marks) برای تمامی گروه‌های خبری در فایل active بازنشانی می‌شوند.
به‌طور پیش‌فرض، هر سوکت ctlinnd که به مدت دو روز تغییر نکرده باشد، حذف خواهد شد. استفاده از این کلیدواژه این عملکرد را غیرفعال می‌کند.
به‌طور پیش‌فرض، پردازش لاگ شامل چرخاندن (دوران) و پاکسازی فایل‌های لاگ است. استفاده از این کلیدواژه جنبه چرخاندن و پاکسازی پردازش لاگ را غیرفعال می‌کند؛ فایل‌های لاگ فقط برای اطلاعات بررسی می‌شوند و هیچ محتوایی تغییر نمی‌کند. در صورت استفاده از کلیدواژه nologs، این کلیدواژه اثری ندارد. در صورت فراخوانی scanlogs، کلیدواژه norotate به آن منتقل می‌شود.
این کلیدواژه گزارش وضعیت تولیدشده توسط innstat را غیرفعال می‌کند. بدون این کلیدواژه، گزارش وضعیت نخستین عملکردی است که دقیقاً پیش از به دست آوردن قفل news.daily انجام می‌شود.
به‌طور پیش‌فرض، news.daily انتظار دارد که تنها یک بار در روز اجرا شود، و کارهای مختلفی انجام می‌دهد (مانند چرخاندن لاگ‌ها) که معمولاً باید صرفاً به صورت روزانه انجام شوند. در هر بار اجرای اضافی news.daily در طول روز، از این کلیدواژه استفاده کنید تا پردازش (و چرخاندن) عادی فایل‌های لاگ انجام نشود. این کلیدواژه متضمن nologs است.
برنامه‌ای که با مسیر مشخص‌شده program تعیین شده است، دقیقاً پس از اتمام تمام فرآیندهای انقضا اجرا می‌شود. می‌توان چندین برنامه را مشخص کرد؛ این برنامه‌ها به ترتیب فراخوانی خواهند شد.
اسکریپت news.daily تلاش می‌کند دایرکتوری backlog مربوط به innfeed را در innfeed.conf و innfeed-delayed.conf پیدا کند. در صورتی که چندین نمونه از innfeed در حال اجرا باشند یا زمانی که فایل پیکربندی آن فایل پیش‌فرض نباشد، می‌توان از کلیدواژه procbatchdir برای مشخص کردن مسیر دایرکتوری backlog استفاده کرد. از این کلیدواژه می‌توان بیش از یک بار در خط فرمان استفاده کرد که امکان تعیین چندین دایرکتوری backlog را فراهم می‌آورد.
با تنظیم متغیر محیطی "$TMPDIR" روی مسیر مشخص‌شده، تنظیم pathtmp در inn.conf را بازنویسی (override) می‌کند. بخش‌های مختلف فرآیند expire، مانند sort، سپس از این مسیر به عنوان دایرکتوری فایل‌های موقت استفاده خواهند کرد.

اسکریپت news.daily و این صفحه راهنما توسط Landon Curt Noll <chongo@toad.com> و Rich $alz <rsalz@uunet.uu.net> برای InterNetNews نوشته شده است. این مستند توسط Julien Elie به POD تبدیل شد.

active(5), ctlinnd(8), expire(8), expire.ctl(5), expireover(8), expirerm(8), fastrm(1), inn.conf(5), innstat(8), newslog(5), procbatch(8), scanlogs(8), shlock(8).

2025-05-09 INN 2.7.4