UPSSCHED.CONF(5) NUT Manual UPSSCHED.CONF(5)

upssched.conf - پیکربندی برنامه زمان‌سنج upssched

این فایل عملیات upssched(8) را کنترل می‌کند، که برنامه کمکی مبتنی بر زمان‌سنج برای upsmon(8) است.

•محتوای این فایل باید اسکی خالص (ASCII) باشد (کدهای نویسه‌ای خارج از این محدوده با پیام هشدار نادیده گرفته می‌شوند).
•اجرای دستورات همگام (synchronous) است (با فرآیند ابزار فراخوانده‌شده در مورد دستورالعمل EXECUTE، یا با فرآیند زمان‌سنج). استفاده از امکانات پوسته سیستم مانند & را برای ارسال پردازش‌های طولانی به پس‌زمینه مد نظر قرار دهید تا به دیمن زمان‌سنج upssched اجازه ادامه کار داده شود. این موضوع نباید تأثیری بر دیمن upsmon بگذارد، زیرا هر اعلان را در یک زیرفرآیند جداگانه مدیریت می‌کند (و در نتیجه مشکلی برای رویدادهای فوری EXECUTE نخواهد بود).

DEBUG_MIN number

اختیاری. تعیین حداقل سطح اشکال‌زدایی برای دیمن یا کلاینت upssched، به عنوان مثال برای رفع اشکال استقرار بدون نیاز به ویرایش پیکربندی مصرف‌کننده.

توجه داشته باشید که گزینه خط فرمان -D تنها می‌تواند این سطح از پرجزئیاتی را افزایش دهد.

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

مثال:

DEBUG_MIN 6

CMDSCRIPT scriptname

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

PIPEFN filename

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

احتیاط (Caution)
اگر از سولاریس یا سیستم‌های مشابه استفاده می‌کنید، مجوزهایی که upssched روی این فایل تنظیم می‌کند برای ایمن نگه داشتن شما کافی نیست. اگر سیستم‌عامل شما مجوزهای روی FIFO را نادیده می‌گیرد، باید حتماً این فایل را در یک پوشه محافظت‌شده قرار دهید!

نکته (Note)
به صورت پیش‌فرض، upsmon(8) برنامه upssched را با کاربری اجرا می‌کند که با RUN_AS_USER در upsmon.conf(5) تعریف کرده‌اید. مطمئن شوید که این کاربر می‌تواند در مسیر استفاده‌شده برای PIPEFN و LOCKFN فایل ایجاد کرده و بنویسد.
توصیه من: یک پوشه ویژه برای upssched بسازید، مالکیت آن را به کاربر upsmon خود اختصاص دهید، سپس از آن برای هر دو استفاده کنید.

نسخه پیش‌فرض upssched.conf با PIPEFN غیرفعال عرضه می‌شود تا شما را وادار کند این بخش از مستندات را بخوانید و پیش از ایجاد حفره امنیتی احتمالی درباره نحوه کار سیستم خود فکر کنید.

LOCKFN filename

الزامی. برنامه upssched تلاش می‌کند این فایل را بسازد تا از شرایط رقابتی در هنگام ارسال دو رویداد از upsmon تقریباً در یک زمان جلوگیری کند. این فایل تنها مدت کوتاهی وجود خواهد داشت. این فایل نباید توسط فرآیند دیگری ایجاد شود.

باید این فایل را در همان پوشه PIPEFN قرار دهید.

AT notifytype upsname command

تعریف یک گرداننده برای رویداد خاص notifytype روی UPS به نام upsname. مقدار upsname می‌تواند مقدار ویژه * باشد تا این گرداننده بر هر UPS اعمال شود.

این گزینه دستور command را زمانی که notifytype و upsname با فعالیت جاری مطابقت داشته باشند اجرا می‌کند. مقادیر ممکن برای command عبارتند از:

START-TIMER timername interval

شروع یک زمان‌سنج به مدت interval ثانیه. هنگامی که فعال شود، آرگومان timername را به عنوان یک آرگومان به CMDSCRIPT شما ارسال می‌کند. هر بار فراخوانی یک زمان‌سنج مستقل را شروع می‌کند، حتی اگر timername از قبل ثبت و آغاز شده باشد (توجه داشته باشید که این امر می‌تواند عملیات بعدی CANCEL-TIMER را دچار اختلال کند).

مثال:

شروع زمان‌سنجی که وقتی هر یوپی‌اسی (*) به مدت ۱۰ ثانیه قطع شده باشد اجرا خواهد شد

AT COMMBAD * START-TIMER upsgone 10

START-TIMER-SHARED timername interval

شروع یک زمان‌سنج به مدت interval ثانیه. هنگامی که فعال شود، آرگومان timername را به CMDSCRIPT شما ارسال می‌کند. هر بار فراخوانی بررسی می‌کند که آیا timername قبلاً آغاز شده است یا خیر، و در این صورت، مقادیر UPSNAME ،NOTIFYTYPE و NOTIFYMSG رویداد فعلی را به لیست مقادیر یکتایی که از طریق متغیرهای محیطی هنگام اجرای زمان‌سنج گزارش می‌شوند اضافه می‌کند (به صورت رشته جداشده با کاما برای UPSNAME و NOTIFYTYPE، و جملات جداشده با تب برای NOTIFYMSG).

نکته (Note)
در حال حاضر این مورد اولین نمونه دیده‌شده با timername را به‌روزرسانی می‌کند (در صورتی که توانسته باشید تعداد زیادی را شروع کنید).
مثال:

شروع زمان‌سنجی که در صورت قطع ارتباط هر UPS (*) به مدت ۱۰ ثانیه اجرا می‌شود

AT COMMBAD * START-TIMER upsgone 10

CANCEL-TIMER timername [cmd]

لغو یک زمان‌سنج در حال اجرا به نام timername در صورت امکان. اگر زمان‌سنج سپری شده باشد، آرگومان اختیاری cmd به CMDSCRIPT ارسال می‌شود.

نکته (Note)
این دستور تمام نمونه‌های دیده‌شده با timername را حذف می‌کند (در صورتی که توانسته باشید چندین مورد را شروع کنید).
مثال:

اگر یک یوپی‌اس خاص (myups@localhost) دوباره آنلاین شود، زمان‌سنج پیش از فعال شدن متوقف شود

AT COMMOK myups@localhost CANCEL-TIMER upsgone

CANCEL-TIMER-MATCHED timername [cmd]

مشابه مورد بالا، اما تلاش می‌کند تنها زمانی timername را لغو کند که به مقادیر UPSNAME و NOTIFYTYPE ارائه‌شده توسط فراخواننده اشاره داشته باشد. مقدار NOTIFYMSG در این بافت نادیده گرفته می‌شود.

مثال:

اگر هر یوپی‌اسی (*) به برق شهری بازگردد، زمان‌سنج را پیش از فعال شدن متوقف کند، تنها در صورتی که آن UPS با زمان‌سنج زمان‌بندی‌شده از قبل مرتبط باشد:

AT ONLINE * CANCEL-TIMER-MATCHED onbattwarn

EXECUTE command

ارسال فوری command به عنوان آرگومان به CMDSCRIPT.

مثال:

اگر هر UPS (*) به برق شهری بازگردد، سپس دستور ups-back-on-line از طریق CMDSCRIPT اجرا شود.

AT ONLINE * EXECUTE ups-back-on-line

توجه داشته باشید که هر دستور AT که با هر دو مقدار notifytype و upsname برای رویداد جاری مطابقت داشته باشد استفاده خواهد شد.

برای فهرست کامل مقادیر ممکن notifytype، به بخش NOTIFY EVENTS در upsmon(8) مراجعه کنید.

upssched(8), upsmon(8)

صفحه خانگی NUT (Network UPS Tools): https://www.networkupstools.org/historic/v2.8.5

06/21/2026 Network UPS Tools 2.8.5