.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "INNWATCH.CTL 5" .TH INNWATCH.CTL 5 2022-07-10 "INN 2.7.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" innwatch.ctl \- کنترل پیکربندی پایشگر innwatch .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" فایل \fIpathetc\fR/innwatch.ctl برای تعیین اقداماتی به کار می‌رود که در طول نظارت‌ها و پایش‌های دوره‌ای توسط \fBinnwatch\fR انجام می‌شوند. .PP این فایل از مجموعه‌ای از خطوط تشکیل شده است؛ خطوط خالی و خطوطی که با علامت هش (\f(CW\*(C`#\*(C'\fR) آغاز می‌شوند، نادیده گرفته می‌شوند. تمام خطوط دیگر شامل هفت فیلد هستند که قبل از هر کدام یک نویسه جداکننده قرار می‌گیرد، برای مثال: .PP .Vb 1 \& !state!when!condition!test!limit!command!reason .Ve .PP یا: .PP .Vb 1 \& @state@when@condition@test@limit@command@reason .Ve .PP جداکننده می‌تواند هر نویسه غیرحرفی-عددی باشد که در جای دیگری از خط ظاهر نشده است؛ هیچ راهی برای نقل‌قول کردن آن جهت گنجاندن در هر یک از فیلدها وجود ندارد. هر یک از \f(CW\*(C`!\*(C'\fR، \f(CW\*(C`,\*(C'\fR، \f(CW\*(C`:\*(C'\fR، \f(CW\*(C`@\*(C'\fR، \f(CW\*(C`;\*(C'\fR یا \f(CW\*(C`?\*(C'\fR انتخابی مناسب است. هر خط می‌تواند جداکننده متفاوتی داشته باشد؛ نخستین نویسه در هر خط، جداکننده آن خط محسوب می‌شود. فاصله‌های خالی پیرامون جداکننده‌ها، به‌جز پیش از نخستین جداکننده، نادیده گرفته می‌شوند و بخشی از فیلدها را تشکیل نمی‌دهند؛ وجود فاصله خالی درون فیلدها مجاز است. تمام جداکننده‌ها باید وجود داشته باشند. .PP فیلد اول، وضعیتی (state) است که در صورت درست بودن شرط این خط کنترلی، باید به آن وارد شد. این فیلد به‌عنوان نشانگر وضعیت داخلی و در پیام‌های \fBctlinnd\fR برای کنترل کارساز استفاده می‌شود. اگر این فیلد خالی باشد، شماره خط به کار می‌رود. .PP فیلد دوم مشخص می‌کند چه زمانی این خط کنترلی باید استفاده شود. این فیلد شامل فهرستی از وضعیت‌ها و نشانگرهای ویژه است که با فاصله خالی از یکدیگر جدا شده‌اند. اگر وضعیت جاری با هر یک از وضعیت‌های این فیلد مطابقت داشته باشد، این خط همان‌طور که در ادامه شرح داده شده به کار خواهد رفت. مقادیری که می‌توانند استفاده شوند عبارتند از: .ie n .IP """\-""" 4 .el .IP \f(CW\-\fR 4 .IX Item "-" این خط زمانی مطابقت دارد که وضعیت جاری با برچسب (label) این خط یکسان باشد، یا وضعیت جاری برابر با \f(CW\*(C`run\*(C'\fR (وضعیت اولیه) باشد. در صورت خالی بودن این فیلد، این مقدار وضعیت پیش‌فرض نیز هست. .ie n .IP """+""" 4 .el .IP \f(CW+\fR 4 .IX Item "+" این خط در صورتی که وضعیت جاری \f(CW\*(C`run\*(C'\fR باشد مطابقت دارد. .ie n .IP """*""" 4 .el .IP \f(CW*\fR 4 .IX Item "*" این خط همیشه مطابقت دارد. .ie n .IP """label""" 4 .el .IP \f(CWlabel\fR 4 .IX Item "label" این خط در صورتی که وضعیت جاری برابر با \f(CW\*(C`label\*(C'\fR مشخص‌شده باشد مطابقت دارد. .ie n .IP """\-label""" 4 .el .IP \f(CW\-label\fR 4 .IX Item "-label" این خط در صورتی که وضعیت جاری برابر با \f(CW\*(C`label\*(C'\fR مشخص‌شده نباشد مطابقت دارد. .PP فیلد سوم یک دستور شل را مشخص می‌کند که در صورت تطابق این خط اجرا می‌شود. از هیچ‌یک از نویسه‌های بسط نام فایل شل مانند \f(CW\*(C`*\*(C'\fR، \f(CW\*(C`?\*(C'\fR یا \f(CW\*(C`[\*(C'\fR استفاده نکنید (حتی با نقل‌قول، احتمالاً مطابق انتظار کار نخواهند کرد). دستور در شرایطی اجرا می‌شود که دایرکتوری جاری آن روی دایرکتوری مقالات news spool (\fIpatharticles\fR) تنظیم شده است. .PP اگر دستور با توجه به وضعیت خروج خود موفق شود، انتظار می‌رود که یک عدد صحیح منفرد را در خروجی استاندارد چاپ کرده باشد. این خروجی، مقدار این خط کنترلی را ارائه می‌دهد تا در ادامه به کار رود. اگر دستور شکست بخورد، این خط نادیده گرفته می‌شود. .PP فیلد چهارم عملگری را مشخص می‌کند که برای آزمایش مقدار بازگردانده‌شده در بالا استفاده می‌شود. این عملگر باید یکی از عملگرهای دوحرفی آزمون عددی تعریف‌شده در test(1) مانند \f(CW\*(C`eq\*(C'\fR، \f(CW\*(C`lt\*(C'\fR و موارد مشابه باشد. خط تیره آغازین (\f(CW\*(C`\-\*(C'\fR) نباید درج شود. .PP فیلد پنجم یک مقدار ثابت را مشخص می‌کند که مقدار بازگردانده‌شده باید با استفاده از عملگر تعیین‌شده با آن مقایسه شود. این کار با اجرای دستور زیر انجام می‌گیرد: .PP .Vb 1 \& test value \-operator constant .Ve .PP اگر این دستور مقدار درست (true) برگرداند، گفته می‌شود که خط \fIموفق\fR شده است. .PP فیلد ششم مشخص می‌کند در صورت موفقیت خط، و در برخی شرایط در صورت شکست آن، چه اقدامی باید انجام شود. هر یک از کلمات زیر می‌توانند استفاده شوند: .ie n .IP """throttle""" 4 .el .IP \f(CWthrottle\fR 4 .IX Item "throttle" در صورت موفقیت این خط، باعث می‌شود \fBinnwatch\fR فعالیت کارساز را به حالت محدود (throttle) ببرد. همچنین وضعیت را به مقدار برچسب این خط تغییر می‌دهد. اگر این خط شکست بخورد و وضعیت قبلاً برابر با برچسب این خط بوده باشد (یعنی این خط قبلاً موفق شده بود)، آن‌گاه دستور \f(CW\*(C`ctlinnd go\*(C'\fR به کارساز فرستاده می‌شود و \fBinnwatch\fR به وضعیت \f(CW\*(C`run\*(C'\fR بازمی‌گردد. دستور \f(CW\*(C`ctlinnd throttle\*(C'\fR تنها زمانی اجرا می‌شود که وضعیت جاری برابر با \f(CW\*(C`run\*(C'\fR یا وضعیتی غیر از برچسب این خط باشد، فارغ از این‌که دستور موفق شود یا خیر. .ie n .IP """pause""" 4 .el .IP \f(CWpause\fR 4 .IX Item "pause" مشابه با \f(CW\*(C`throttle\*(C'\fR است، به جز اینکه کارساز با استفاده از دستور \f(CW\*(C`ctlinnd pause\*(C'\fR به حالت مکث (pause) برده می‌شود. .ie n .IP """shutdown""" 4 .el .IP \f(CWshutdown\fR 4 .IX Item "shutdown" دستور \f(CW\*(C`ctlinnd shutdown\*(C'\fR را به کارساز ارسال می‌کند. این گزینه فقط برای استفاده در مواقع اضطراری است. .ie n .IP """flush""" 4 .el .IP \f(CWflush\fR 4 .IX Item "flush" دستور \f(CW\*(C`ctlinnd flush\*(C'\fR را به کارساز ارسال می‌کند. .ie n .IP """go""" 4 .el .IP \f(CWgo\fR 4 .IX Item "go" باعث می‌شود \fBinnwatch\fR دستور \f(CW\*(C`ctlinnd go\*(C'\fR را به کارساز ارسال کرده و وضعیت را به \f(CW\*(C`run\*(C'\fR تغییر دهد. .ie n .IP """exit""" 4 .el .IP \f(CWexit\fR 4 .IX Item "exit" باعث خروج \fBinnwatch\fR می‌شود. .ie n .IP """skip""" 4 .el .IP \f(CWskip\fR 4 .IX Item "skip" باقی‌مانده فایل کنترل برای دور جاری نادیده گرفته می‌شود. .PP فیلد آخر دلیلی را مشخص می‌کند که در دستورات \f(CW\*(C`ctlinnd\*(C'\fR نیازمند دلیل استفاده می‌شود. به‌طور دقیق‌تر، این بخشی از دلیل است، زیرا \fBinnwatch\fR اطلاعاتی را به آن ضمیمه می‌کند. .PP برای اینکه سایر پایگاه‌ها بتوانند وضعیت کارساز محلی \fBinnd\fR را تشخیص دهند، این فیلد معمولاً باید روی یکی از چندین مقدار استاندارد تنظیم شود. برای مثال، اگر کارساز به دلیل کمبود منابع فایل‌سیستم مقالات را رد می‌کند، از \f(CW\*(C`No space\*(C'\fR استفاده کنید، یا اگر کارساز به دلیل کمبود منابع CPU مقالات را رد می‌کند، از \f(CW\*(C`loadav\*(C'\fR استفاده نمایید. .PP هنگامی که \fBinnwatch\fR در نتیجه یکی از خطوط کنترلی خود اقدامی انجام دهد، باقی‌مانده فایل کنترل را برای این دور نادیده می‌گیرد. اگر اقدام انجام‌شده برای راه‌اندازی مجدد کارساز باشد (یعنی صدور دستور \f(CW\*(C`ctlinnd go\*(C'\fR)، آن‌گاه دور بعدی تقریباً بلافاصله آغاز خواهد شد تا \fBinnwatch\fR بتواند شرایط دیگر را که ممکن است نیازمند تعلیق مجدد کارساز باشند بررسی کند. .SH "مثال‌ها (EXAMPLES)" .IX Header "EXAMPLES" .Vb 2 \& !!! inndf . ! lt ! 10000 ! throttle ! No space (spool) \& !!! inndf \-i . ! lt ! 1000 ! throttle ! No space (inodes) .Ve .PP خط اول باعث می‌شود که اگر فضای آزاد به زیر ۱۰۰۰۰ واحد کاهش یابد (با هر واحدی که \fBinndf\fR استفاده می‌کند)، کارساز به حالت محدود (throttle) برود و هنگامی که فضای آزاد بالاتر از آستانه افزایش یافت، دوباره راه‌اندازی شود. .PP خط دوم همین کار را برای inodeها انجام می‌دهد. .PP سه خط بعدی به‌صورت یک گروه عمل می‌کنند و باید به ترتیب زیر قرار گیرند. با این وجود، اگر از آخر به اول توضیح داده شوند درک آن‌ها آسان‌تر است. .PP .Vb 3 \& ! load ! load hiload ! loadavg ! lt ! 5 ! go ! loadav \& : hiload : + load : loadavg : gt : 8 : throttle : loadav \& / load / + / loadavg / gt / 6 / pause / loadav .Ve .PP خط پایانی در صورتی که \fBinnwatch\fR در وضعیت \f(CW\*(C`run\*(C'\fR باشد و میانگین بار (load average) به شش یا بالاتر برسد، باعث بردن کارساز به حالت مکث (pause) می‌شود. با رخ دادن این رویداد، وضعیت به \f(CW\*(C`load\*(C'\fR تغییر می‌یابد. خط پیش از آن در صورتی که \fBinnwatch\fR در وضعیت \f(CW\*(C`run\*(C'\fR یا \f(CW\*(C`load\*(C'\fR باشد و میانگین بار از هشت فراتر رود، باعث محدود شدن (throttle) کارساز می‌شود. با رخ دادن این حالت، وضعیت به \f(CW\*(C`hiload\*(C'\fR تغییر می‌یابد. توجه داشته باشید که اگر میانگین بار از کمتر از شش به بین شش و هفت برسد، و سپس از هشت فراتر رود، \fBinnwatch\fR می‌تواند کارساز را از حالت \f(CW\*(C`pause\*(C'\fR به \f(CW\*(C`throttle\*(C'\fR منتقل کند. خط اول در صورتی که \fBinnwatch\fR در وضعیت \f(CW\*(C`load\*(C'\fR یا \f(CW\*(C`hiload\*(C'\fR باشد و میانگین بار به زیر پنج کاهش یابد، باعث ارسال دستور \f(CW\*(C`ctlinnd go\*(C'\fR به کارساز می‌شود. .PP توجه داشته باشید که هر سه خط وجود یک دستور فرضی به نام \f(CW\*(C`loadavg\*(C'\fR را متصور می‌شوند که قرار است میانگین بار فعلی را به‌صورت یک عدد صحیح چاپ کند. در شرایط عملی واقعی‌تر، ارسال خروجی دستور \fBuptime\fR از طریق پایپ به AWK احتمالاً کاربردی‌تر خواهد بود. .SH "اشکالات (BUGS)" .IX Header "BUGS" وضعیت \f(CW\*(C`run\*(C'\fR در عمل با برچسبی با همین نام سه‌حرفی شناسایی نمی‌شود و استفاده از آن مطابق انتظار عمل نخواهد کرد (در آن صورت \f(CW\*(C`go\*(C'\fR وضعیت مورد نظر است). .PP استفاده از یک نویسه \fIغیرمعمول\fR برای جداکننده، مانند \f(CW\*(C`(\*(C'\fR، \f(CW\*(C`*\*(C'\fR، \f(CW\*(C`&\*(C'\fR، \f(CW\*(C`\`\*(C'\fR، \f(CW\*(C`\*(Aq\*(C'\fR و مانند آن، احتمالاً منجر به اشکالات مبهم و غیرقابل‌ردیابی خواهد شد. .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" نوشته‌شده توسط برای InterNetNews. بازنویسی‌شده در قالب POD توسط Julien Elie. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" ctlinnd(8), inndf(8), news.daily(8), rc.news(8).