| INNWATCH.CTL(5) | InterNetNews Documentation | INNWATCH.CTL(5) |
نام (NAME)
innwatch.ctl - کنترل پیکربندی پایشگر innwatch
توضیحات (DESCRIPTION)
فایل pathetc/innwatch.ctl برای تعیین اقداماتی به کار میرود که در طول نظارتها و پایشهای دورهای توسط innwatch انجام میشوند.
این فایل از مجموعهای از خطوط تشکیل شده است؛ خطوط خالی و خطوطی که با علامت هش ("#") آغاز میشوند، نادیده گرفته میشوند. تمام خطوط دیگر شامل هفت فیلد هستند که قبل از هر کدام یک نویسه جداکننده قرار میگیرد، برای مثال:
!state!when!condition!test!limit!command!reason
یا:
@state@when@condition@test@limit@command@reason
جداکننده میتواند هر نویسه غیرحرفی-عددی باشد که در جای دیگری از خط ظاهر نشده است؛ هیچ راهی برای نقلقول کردن آن جهت گنجاندن در هر یک از فیلدها وجود ندارد. هر یک از "!"، ","، ":"، "@"، ";" یا "?" انتخابی مناسب است. هر خط میتواند جداکننده متفاوتی داشته باشد؛ نخستین نویسه در هر خط، جداکننده آن خط محسوب میشود. فاصلههای خالی پیرامون جداکنندهها، بهجز پیش از نخستین جداکننده، نادیده گرفته میشوند و بخشی از فیلدها را تشکیل نمیدهند؛ وجود فاصله خالی درون فیلدها مجاز است. تمام جداکنندهها باید وجود داشته باشند.
فیلد اول، وضعیتی (state) است که در صورت درست بودن شرط این خط کنترلی، باید به آن وارد شد. این فیلد بهعنوان نشانگر وضعیت داخلی و در پیامهای ctlinnd برای کنترل کارساز استفاده میشود. اگر این فیلد خالی باشد، شماره خط به کار میرود.
فیلد دوم مشخص میکند چه زمانی این خط کنترلی باید استفاده شود. این فیلد شامل فهرستی از وضعیتها و نشانگرهای ویژه است که با فاصله خالی از یکدیگر جدا شدهاند. اگر وضعیت جاری با هر یک از وضعیتهای این فیلد مطابقت داشته باشد، این خط همانطور که در ادامه شرح داده شده به کار خواهد رفت. مقادیری که میتوانند استفاده شوند عبارتند از:
- "-"
- این خط زمانی مطابقت دارد که وضعیت جاری با برچسب (label) این خط یکسان باشد، یا وضعیت جاری برابر با "run" (وضعیت اولیه) باشد. در صورت خالی بودن این فیلد، این مقدار وضعیت پیشفرض نیز هست.
- "+"
- این خط در صورتی که وضعیت جاری "run" باشد مطابقت دارد.
- "*"
- این خط همیشه مطابقت دارد.
- "label"
- این خط در صورتی که وضعیت جاری برابر با "label" مشخصشده باشد مطابقت دارد.
- "-label"
- این خط در صورتی که وضعیت جاری برابر با "label" مشخصشده نباشد مطابقت دارد.
فیلد سوم یک دستور شل را مشخص میکند که در صورت تطابق این خط اجرا میشود. از هیچیک از نویسههای بسط نام فایل شل مانند "*"، "?" یا "[" استفاده نکنید (حتی با نقلقول، احتمالاً مطابق انتظار کار نخواهند کرد). دستور در شرایطی اجرا میشود که دایرکتوری جاری آن روی دایرکتوری مقالات news spool (patharticles) تنظیم شده است.
اگر دستور با توجه به وضعیت خروج خود موفق شود، انتظار میرود که یک عدد صحیح منفرد را در خروجی استاندارد چاپ کرده باشد. این خروجی، مقدار این خط کنترلی را ارائه میدهد تا در ادامه به کار رود. اگر دستور شکست بخورد، این خط نادیده گرفته میشود.
فیلد چهارم عملگری را مشخص میکند که برای آزمایش مقدار بازگرداندهشده در بالا استفاده میشود. این عملگر باید یکی از عملگرهای دوحرفی آزمون عددی تعریفشده در test(1) مانند "eq"، "lt" و موارد مشابه باشد. خط تیره آغازین ("-") نباید درج شود.
فیلد پنجم یک مقدار ثابت را مشخص میکند که مقدار بازگرداندهشده باید با استفاده از عملگر تعیینشده با آن مقایسه شود. این کار با اجرای دستور زیر انجام میگیرد:
test value -operator constant
اگر این دستور مقدار درست (true) برگرداند، گفته میشود که خط موفق شده است.
فیلد ششم مشخص میکند در صورت موفقیت خط، و در برخی شرایط در صورت شکست آن، چه اقدامی باید انجام شود. هر یک از کلمات زیر میتوانند استفاده شوند:
- "throttle"
- در صورت موفقیت این خط، باعث میشود innwatch فعالیت کارساز را به حالت محدود (throttle) ببرد. همچنین وضعیت را به مقدار برچسب این خط تغییر میدهد. اگر این خط شکست بخورد و وضعیت قبلاً برابر با برچسب این خط بوده باشد (یعنی این خط قبلاً موفق شده بود)، آنگاه دستور "ctlinnd go" به کارساز فرستاده میشود و innwatch به وضعیت "run" بازمیگردد. دستور "ctlinnd throttle" تنها زمانی اجرا میشود که وضعیت جاری برابر با "run" یا وضعیتی غیر از برچسب این خط باشد، فارغ از اینکه دستور موفق شود یا خیر.
- "pause"
- مشابه با "throttle" است، به جز اینکه کارساز با استفاده از دستور "ctlinnd pause" به حالت مکث (pause) برده میشود.
- "shutdown"
- دستور "ctlinnd shutdown" را به کارساز ارسال میکند. این گزینه فقط برای استفاده در مواقع اضطراری است.
- "flush"
- دستور "ctlinnd flush" را به کارساز ارسال میکند.
- "go"
- باعث میشود innwatch دستور "ctlinnd go" را به کارساز ارسال کرده و وضعیت را به "run" تغییر دهد.
- "exit"
- باعث خروج innwatch میشود.
- "skip"
- باقیمانده فایل کنترل برای دور جاری نادیده گرفته میشود.
فیلد آخر دلیلی را مشخص میکند که در دستورات "ctlinnd" نیازمند دلیل استفاده میشود. بهطور دقیقتر، این بخشی از دلیل است، زیرا innwatch اطلاعاتی را به آن ضمیمه میکند.
برای اینکه سایر پایگاهها بتوانند وضعیت کارساز محلی innd را تشخیص دهند، این فیلد معمولاً باید روی یکی از چندین مقدار استاندارد تنظیم شود. برای مثال، اگر کارساز به دلیل کمبود منابع فایلسیستم مقالات را رد میکند، از "No space" استفاده کنید، یا اگر کارساز به دلیل کمبود منابع CPU مقالات را رد میکند، از "loadav" استفاده نمایید.
هنگامی که innwatch در نتیجه یکی از خطوط کنترلی خود اقدامی انجام دهد، باقیمانده فایل کنترل را برای این دور نادیده میگیرد. اگر اقدام انجامشده برای راهاندازی مجدد کارساز باشد (یعنی صدور دستور "ctlinnd go")، آنگاه دور بعدی تقریباً بلافاصله آغاز خواهد شد تا innwatch بتواند شرایط دیگر را که ممکن است نیازمند تعلیق مجدد کارساز باشند بررسی کند.
مثالها (EXAMPLES)
!!! inndf . ! lt ! 10000 ! throttle ! No space (spool) !!! inndf -i . ! lt ! 1000 ! throttle ! No space (inodes)
خط اول باعث میشود که اگر فضای آزاد به زیر ۱۰۰۰۰ واحد کاهش یابد (با هر واحدی که inndf استفاده میکند)، کارساز به حالت محدود (throttle) برود و هنگامی که فضای آزاد بالاتر از آستانه افزایش یافت، دوباره راهاندازی شود.
خط دوم همین کار را برای inodeها انجام میدهد.
سه خط بعدی بهصورت یک گروه عمل میکنند و باید به ترتیب زیر قرار گیرند. با این وجود، اگر از آخر به اول توضیح داده شوند درک آنها آسانتر است.
! load ! load hiload ! loadavg ! lt ! 5 ! go ! loadav : hiload : + load : loadavg : gt : 8 : throttle : loadav / load / + / loadavg / gt / 6 / pause / loadav
خط پایانی در صورتی که innwatch در وضعیت "run" باشد و میانگین بار (load average) به شش یا بالاتر برسد، باعث بردن کارساز به حالت مکث (pause) میشود. با رخ دادن این رویداد، وضعیت به "load" تغییر مییابد. خط پیش از آن در صورتی که innwatch در وضعیت "run" یا "load" باشد و میانگین بار از هشت فراتر رود، باعث محدود شدن (throttle) کارساز میشود. با رخ دادن این حالت، وضعیت به "hiload" تغییر مییابد. توجه داشته باشید که اگر میانگین بار از کمتر از شش به بین شش و هفت برسد، و سپس از هشت فراتر رود، innwatch میتواند کارساز را از حالت "pause" به "throttle" منتقل کند. خط اول در صورتی که innwatch در وضعیت "load" یا "hiload" باشد و میانگین بار به زیر پنج کاهش یابد، باعث ارسال دستور "ctlinnd go" به کارساز میشود.
توجه داشته باشید که هر سه خط وجود یک دستور فرضی به نام "loadavg" را متصور میشوند که قرار است میانگین بار فعلی را بهصورت یک عدد صحیح چاپ کند. در شرایط عملی واقعیتر، ارسال خروجی دستور uptime از طریق پایپ به AWK احتمالاً کاربردیتر خواهد بود.
اشکالات (BUGS)
وضعیت "run" در عمل با برچسبی با همین نام سهحرفی شناسایی نمیشود و استفاده از آن مطابق انتظار عمل نخواهد کرد (در آن صورت "go" وضعیت مورد نظر است).
استفاده از یک نویسه غیرمعمول برای جداکننده، مانند "("، "*"، "&"، "`"، "'" و مانند آن، احتمالاً منجر به اشکالات مبهم و غیرقابلردیابی خواهد شد.
تاریخچه (HISTORY)
نوشتهشده توسط <kre@munnari.oz.au> برای InterNetNews. بازنویسیشده در قالب POD توسط Julien Elie.
همچنین ببینید (SEE ALSO)
ctlinnd(8), inndf(8), news.daily(8), rc.news(8).
| 2022-07-10 | INN 2.7.4 |