UPSSCHED(8) راهنمای NUT UPSSCHED(8)

upssched - دستیار زمان‌سنج برای زمان‌بندی رویدادها از upsmon

upssched [OPTIONS] [NOTIFYMSG]


یادداشت (Note)

دستور upssched باید از طریق NOTIFYCMD توسط upsmon(8) اجرا شود. هرگز نباید آن را در طول عملیات عادی مستقیماً اجرا کنید.

upssched -l

فهرست کردن رویدادهای زمان‌سنج تحت ردیابی کنونی، در صورت وجود. گزارش به‌صورت یک جدول با ستون‌های جداشده با کلیدبرگ (TAB) از: NAME، TIMEOUT_ABS، TIMEOUT_REL، NOTIFYTYPE، UPSNAME، NOTIFYMSG.

دستور upssched برای این ایجاد شد که به کاربران اجازه دهد برنامه‌ها را در زمان‌هایی متناسب با رویدادهای تحت نظارت upsmon(8) اجرا کنند. هدف اصلی، امکان خاموش کردن سیستم پس از یک دوره مشخص کار روی باتری بود، اما کاربردهای دیگری نیز ممکن است.

-h

نمایش پیام راهنمای خط فرمان.

-V

نمایش مشخصات و نسخه NUT. جزئیات بیشتر ممکن است با تنظیم export NUT_DEBUG_LEVEL=1 یا سطوح اشکال‌زدایی بالاتر در دسترس باشد.

-D

افزایش سطح اشکال‌زدایی. برای جزئیات بیشتر از این گزینه چندین بار استفاده کنید.

به‌طور پیش‌فرض upssched فایل پیکربندی خود را پردازش می‌کند و بر اساس پیکربندی و مقدار NOTIFYTYPE دریافتی، فراخوانی‌های CMDSCRIPT را اجرا کرده یا در صف قرار می‌دهد، یا برخی موارد قبلاً در صف قرار گرفته را لغو می‌کند. یک استثنا برای این حالت، حالت فهرست کردن صف با گزینه -l است.

-l

فهرست کردن زمان‌سنج‌های معلق (در صورت وجود) و خروج.

NOTIFYMSG

ارسال اختیاری یک پیام متنی (معمولاً از فراخوانی upsmon(8) به upssched به‌عنوان NOTIFYCMD سرچشمه می‌گیرد) در قالب متغیر محیطی با نام NOTIFYMSG به CMDSCRIPT که توسط upssched بلافاصله یا پس از انقضای زمان‌سنج اجرا می‌شود.

دستور upssched باید به‌عنوان NOTIFYCMD در upsmon.conf(5) شما فراخوانی شود. این برنامه بر اساس متغیرهای محیطی UPSNAME و NOTIFYTYPE تشخیص می‌دهد چه اتفاقی در حال رخ دادن است. هرگز نباید مستقیماً با آن‌ها سر و کار داشته باشید.

فلگ EXEC را روی رویدادهایی که می‌خواهید در upssched دیده شوند تنظیم کنید. برای مثال، جهت اطمینان از اینکه upssched از رویدادهای ONLINE، ONBATT و LOWBATT مطلع می‌شود، فلگ‌ها به این صورت خواهند بود:

NOTIFYFLAG ONLINE EXEC
NOTIFYFLAG ONBATT EXEC
NOTIFYFLAG LOWBATT EXEC

اگر می‌خواهید ثبت وقایع در syslog نیز ادامه یابد، کافی است آن را اضافه کنید:

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC

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

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

برای اطلاعات درباره پیکربندی این برنامه، upssched.conf(5) را ببینید.

برای خاموش کردن زودهنگام سیستم، زمان‌سنجی تعریف کنید که با وضعیت ONBATT شروع شود. هنگام فعال شدن، تنظیم کنید که CMDSCRIPT شما روتین خاموش‌سازی را فراخوانی کند. این کار باید با فراخوانی upsmon -c fsd پایان یابد تا upsmon بتواند سرورهای وابسته (slaves) را به‌صورت کنترل‌شده خاموش کند.

اطمینان حاصل کنید که در صورت بازگشت برق (ONLINE) زمان‌سنج را لغو می‌کنید.

نمونه اصلی (primary) در upsmon(8) مسئول دستور دادن به دستگاه(های) UPS برای قطع برق در پایان خاموش‌سازی اضطراری است. بنابراین، در صورت وجود چندین کلاینت، نمونه اصلی فلگ "FSD" (خاموش‌سازی اجباری) را روی سرور داده برای هر UPS تحت مدیریت خود بالا می‌برد و منتظر خروج نمونه‌های ثانویه (secondary) می‌ماند (یا تا زمان انقضای مهلت زمانی). اگر فعالیت‌هایی وجود دارد که باید در طول خاموش‌سازی روی رایانه upsmon اصلی انجام شود و زمان زیادی می‌برد، می‌توانید از اعلان FSD برای شروع این عملیات استفاده کنید، در حالی که نمونه اصلی upsmon منتظر می‌ماند تا نمونه‌های ثانویه خاموش‌سازی خود را کامل کنند.

اگر چندین UPS دارید، ممکن است بخواهید چندین اعلان را با دستورالعمل START-TIMER-SHARED (با یک مهلت زمانی کوتاه) ترکیب کنید تا فقط یک بار واکنش نشان دهید. در غیر این صورت، اگر فعالیت مورد نیاز بسته به UPS متفاوت باشد (به‌عنوان مثال، اسکریپت‌های سفارشی خاموش‌سازی دستگاه راه دور)، ممکن است بخواهید بلافاصله از قواعد EXECUTE استفاده کنید (و کارهای بعدی را در CMDSCRIPT خود اعزام نمایید).

اگر UPS شما مکرراً روی باتری رفته و بازمی‌گردد، می‌توانید از این برنامه برای کاهش تعداد پیام‌های ارسالی به پیجر استفاده کنید. به‌جای ارسال مستقیم پیام‌ها از upsmon(8)، از یک زمان‌سنج کوتاه در اینجا استفاده کنید. اگر زمان‌سنج در حالی فعال شود که UPS هنوز روی باتری است، پیام را ارسال کنید. اگر برق قبل از آن زمان بازگردد، زمان‌سنج می‌تواند لغو شود و نیازی به ارسال پیام نخواهد بود.

این برنامه در اصل برای برآورده کردن درخواست‌های کاربران برای سناریوی خاموش‌سازی زودهنگام نوشته شده است. طراحی «بیرونی» برنامه (نسبت به upsmon) به منظور کاهش بار روی یک سیستم معمولی در نظر گرفته شده بود. بیشتر افراد نیازی به خاموش کردن سیستم پس از N ثانیه کار روی باتری ندارند، زیرا آزمایش معمول OB+LB کفایت می‌کند.

این برنامه به‌طور جداگانه ایجاد شد تا آن افراد مجبور نباشند زمان CPU و حافظه RAM را صرف چیزی کنند که هرگز در محیط‌هایشان استفاده نخواهد شد.

طراحی گرداننده زمان‌سنج نیز با هدف به حداقل رساندن تأثیر بر سیستم انجام گرفته است. این برنامه در صورت نیاز در فهرست فرایندها ظاهر شده و خارج می‌شود. هنگامی که یک زمان‌سنج جدید شروع می‌شود، فرایندی فورک خواهد شد تا زمان را رصد کند و در نهایت CMDSCRIPT را آغاز نماید. هنگامی که یک زمان‌سنج فعال می‌شود، از صف حذف می‌گردد. لغو کردن زمان‌سنج نیز آن را از صف حذف می‌کند. زمانی که هیچ زمان‌سنجی در صف وجود نداشته باشد، فرایند پس‌زمینه خارج می‌شود.

این بدان معناست که شما upssched را فقط در صورت وقوع یکی از این دو حالت در حال اجرا خواهید دید:

•نوعی زمان‌سنج در حال حاضر در حال اجرا باشد
•برنامه upsmon تازه آن را فراخوانی کرده باشد و شما توانسته باشید آن لحظه کوتاه را ببینید

بهینه‌سازی نهایی، احتمال تلاش برای لغو یک زمان‌سنج را در زمانی که هیچ زمان‌سنجی در حال اجرا نیست مدیریت می‌کند. اگر دیمن زمان‌سنج در حال اجرا نباشد، هیچ زمان‌سنجی برای لغو وجود ندارد و علاوه بر این نیازی به شروع ناظر ساعت نیست. بنابراین، آن مرحله را نادیده گرفته و زودتر خارج می‌شود.

متغیر NUT_DEBUG_LEVEL در صورتی که هیچ آرگومان -D در خط فرمان ارائه نشده باشد، پرگویی پیش‌فرض اشکال‌زدایی را تنظیم می‌کند، اما درخواست اجرای دیمن در حالت پیش‌زمینه را نمی‌دهد.


یادداشت (Note)

برخلاف برخی دیگر از دیمن‌های NUT، برنامه upssched با اشکال‌زدایی فعال، گزارش‌دهی در stderr را متوقف نمی‌کند! این برنامه با اولین فراخوانی یک فرایند پس‌زمینه به‌عنوان گرداننده رویداد فورک می‌کند که کمی پس از سپری شدن و مدیریت تمام زمان‌سنج‌های تحت ردیابی (در صورت نیاز) خارج می‌شود.

متغیرهای UPSNAME و NOTIFYTYPE همان‌طور که در بالا توضیح داده شد الزامی هستند. آن‌ها توسط upsmon هنگامی که upssched را به‌عنوان انتخاب NOTIFYCMD خود فراخوانی می‌کند، تنظیم می‌شوند.

متغیر NUT_CONFPATH نام مسیر پوشه‌ای است که شامل upssched.conf و سایر فایل‌های پیکربندی است. اگر این متغیر تنظیم نشده باشد، upssched از یک پیش‌فرض توکار استفاده می‌کند که اغلب /usr/local/ups/etc است.

upssched.conf(5)

upsmon(8)

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

06/21/2026 Network UPS Tools 2.8.5