UPSDRVSVCCTL(8) NUT Manual UPSDRVSVCCTL(8)

upsdrvsvcctl - ابزار مدیریت سرویس‌های درایور یوپی‌اس در NUT

upsdrvsvcctl -h

upsdrvsvcctl [گزینه‌ها] {start | stop | status} [ups]

دستور upsdrvsvcctl یک رابط یکپارچه برای کنترل درایورهای یوپی‌اس (UPS) شما که در قالب نمونه‌های سرویس بسته‌بندی شده‌اند بر روی پلتفرم‌هایی که از آن پشتیبانی می‌کنند فراهم می‌کند (در حال حاضر این پلتفرم‌ها شامل توزیع‌های لینوکس مجهز به systemd و سیستم‌های برگرفته از پایه‌کد Solaris 10، از جمله Sun/Oracle Solaris اختصاصی و توزیع‌های متن‌باز متعدد illumos با SMF است). ممکن است در بسته‌بندی سایر سیستم‌عامل‌ها نصب نشده باشد.

در صورت استفاده صحیح، upsdrvsvcctl به شما امکان می‌دهد اسکریپت‌های راه‌اندازی یکسانی را در چندین سیستم با پیکربندی‌های مختلف یوپی‌اس نگهداری کنید.

هدف این راهکار این است که به سرویس‌های کارساز داده upsd(8) اجازه دهد حتی در صورت عدم دسترسی موقت به برخی از دستگاه‌های برق راه‌اندازی شوند، و در صورت بروز مشکل (باگ درایور، شکست در راه‌اندازی) درایورهای NUT به طور خودکار توسط سیستم بازراه‌اندازی شوند. همچنین با اجازه دادن به هر درایور برای شروع همگام با سایرین و به محض در دسترس قرار گرفتن زیرسیستم مورد نیاز برای رسانه اختصاصی آن درایور، امکان راه‌اندازی سریع‌تر سیستم‌هایی را که چندین دستگاه را پایش می‌کنند فراهم می‌آورد؛ یعنی نه با یک حلقه ترتیبی مانند گذشته.

نمونه‌های سرویس مستقل برای هر درایور NUT همچنین امکان پیکربندی وابستگی‌های بیشتری را فراهم می‌کنند، مانند اینکه دسترسی به شبکه برای SNMP و درایورهای مشابه باید فراهم باشد (اما برای درایورهای رسانه محلی مانند سریال یا USB نیازی به آن نیست).

راهکار قدیمی و یکپارچه «همه یا هیچ» که مستلزم در حال اجرا بودن تمام درایورها بود و برای استقرارهایی با چند یوپی‌اس کفایت می‌کرد، برای پایش استقرارهای بزرگ‌تر چندان کارآمد نبود. همچنین ایجاد تعادلی از پیش‌تعیین‌شده میان حفاظت زودهنگام یوپی‌اس برای پیکربندی‌های خانگی USB/سریال در مقابل انتظار برای دسترسی به شبکه در محیط‌های بزرگ‌تر آسان نبود.

دستور upsdrvsvcctl اسکریپتی است که از عملکرد برنامه upsdrvctl(8) (در صورت امکان) تقلید می‌کند تا هنگام کار با درایورهای بسته‌بندی‌شده در قالب نمونه‌های سرویس، به جای دیمن‌های مستقیماً اجرا شده، تجربه کاربری نهایی مشابهی ارائه دهد. این ابزار برای بخش بزرگی از عملیات واقعی خود به nut-driver-enumerator(8) متکی است.

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

-h

نمایش متن راهنما، شامل نسخه داخلی اسکریپت.

-V

نمایش نسخه فایل‌های باینری NUT (از طریق فراخوانی upsdrvctl -V)، که معمولاً نباید تفاوت چندانی با نسخه داخلی اسکریپت که در راهنما نشان داده شده داشته باشد. اما با ساخت‌های سفارشی هر چیزی ممکن است، بنابراین دانستن آن می‌تواند مفید باشد.

-t

فعال‌سازی حالت آزمایشی. حالت آزمایشی باعث می‌شود upsdrvsvcctl اقداماتی را که قصد اجرای آن‌ها را دارد بدون انجام واقعی آن‌ها نمایش دهد.

--timeout-cmd <prog> و --timeout-args <arg>

فراخوانی‌های مدیریت سرویس با فراخوانی برنامه مشخص‌شده به همراه آرگومان‌های آن محدودیت زمانی خواهند داشت. به طور پیش‌فرض، اگر دستور timeout از coreutils پیدا شود، برای محدود کردن فراخوانی‌های سرویس به ۹۰ ثانیه استفاده می‌شود تا از برخی قفل‌شدگی‌هایی که در بعضی از نسخه‌های systemd تحت بار کاری رخ می‌دهد جلوگیری کرده یا آن‌ها را دور بزند.

گزینه‌هایی مانند -r، -u یا -D می‌توانند توسط ویژگی‌های خود نمونه‌های سرویس مدیریت شوند، و این اسکریپت به پیکربندی آن‌ها کمک می‌کند (با فرض دسترسی‌های مناسب کاربری که آن را فراخوانی کرده است). با این حال، تغییر چنین گزینه‌هایی در یک سیستم پیکربندی‌شده کاربرد عملیاتی ندارد — بنابراین برای آزمایش‌ها و عیب‌یابی، بهتر است نمونه سرویس متوقف شده و مستقیماً با upsdrvctl کار شود.

-r directory

در صورت راه‌اندازی یک درایور، این مقدار آن را هدایت می‌کند تا به directory وارد شود (chroot(2)). این گزینه می‌تواند هنگام ایمن‌سازی سیستم‌ها مفید باشد.

این مقدار را می‌توان در ups.conf(5) با دستورالعمل chroot در بخش سراسری تنظیم کرد.

-u username

در صورت راه‌اندازی یک درایور، این مقدار آن را هدایت می‌کند تا شناسه کاربری (setuid(2)) خود را به کاربر مرتبط با username تغییر دهد.

اگر درایور به عنوان root بدون تعیین این مقدار راه‌اندازی شود، از نام کاربری که در فایل باینری کامپایل شده است استفاده خواهد کرد. مقدار پیش‌فرض آن nobody است (اگر جور دیگری پیکربندی نشده باشد)، که اصلاً ایده‌آل نیست.

این مقدار را می‌توان در ups.conf(5) با دستورالعمل user در بخش سراسری تنظیم کرد.

-D

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

دستور upsdrvsvcctl از سه دستوری که توسط upsdrvctl پردازش می‌شوند پشتیبانی می‌کند — start، stop و shutdown. آن‌ها یک آرگومان اختیاری دریافت می‌کنند که نام یک UPS از ups.conf(5) است. بدون آن آرگومان، آن‌ها بر روی هر UPS که در حال حاضر پیکربندی شده است عمل می‌کنند.

نکته: دستور shutdown در حال حاضر با متوقف کردن نمونه‌های سرویس درایور برای آزادسازی پورت‌های احیاناً اشغال‌شده و غیره، فراخوانی مستقیم upsdrvctl برای صدور دستور خاموش‌سازی، و راه‌اندازی مجدد نمونه‌های سرویس درایور برای اتصال مجدد پس از بازگشت دستگاه به حالت برخط، پشتیبانی می‌شود.

start

راه‌اندازی درایور(های) UPS. در صورت بروز خطا، ممکن است تلاش‌های بعدی با استفاده از گزینه‌های maxretry و retrydelay انجام شود — به ups.conf(5) مراجعه کنید.

stop

متوقف کردن درایور(های) UPS.

status

پرس‌وجوی وضعیت زمان اجرای تمام دستگاه‌های پیکربندی‌شده (یا یک دستگاه مشخص). در حال حاضر کار را به upsdrvctl(8) محول می‌کند تا پیکربندی‌های دستگاه‌های شناخته‌شده و جزئیات دیمن درایور آن‌ها (PID، پاسخ‌دهی، ups.status) را فهرست کند، و به nut-driver-enumerator(8) تا نام دستگاه‌ها را به نمونه‌های واحد سرویس نگاشت کرده و نام و وضعیت آن‌ها را در چارچوب مدیریت سرویس گزارش دهد.

دستور upsdrvsvcctl همچنین از عملیات‌های بیشتری برای عیب‌یابی نگاشت نام بخش‌های درایور NUT به نام نمونه‌های سرویس (که ممکن است به دلیل محدودیت‌های سیستم‌های مختلف متفاوت باشد) پشتیبانی می‌کند.

list

فهرست کردن نگاشت‌های در حال حاضر فعالِ نمونه‌های سرویس به بخش‌های دستگاه

resync

به‌روزرسانی نگاشت نمونه‌های سرویس برای درایورهای NUT به نام بخش‌های دستگاه استفاده‌شده در ups.conf (ثبت نمونه‌های جدید، برچیدن نمونه‌های منسوخ‌شده).

shutdown

دستور به درایور(های) UPS برای اجرای توالی خاموش‌سازی آن‌ها. درایورها بر اساس مقدار sdorder آن‌ها متوقف می‌شوند — به ups.conf(5) مراجعه کنید.

هشدار

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


نکته

برای استفاده از پارامتر nowait به ups.conf(5) مراجعه کنید. این مقدار را می‌توان با متغیر محیطی NUT_IGNORE_NOWAIT لغو کرد (برای مثال، برای دور زدن برخی مشکلات خاص با systemd در غیر این صورت استفاده می‌شود).

متغیر NUT_CONFPATH نام مسیر دایرکتوری است که حاوی upsd.conf و سایر فایل‌های پیکربندی است. اگر این متغیر تنظیم نشده باشد، upsdrvsvcctl (یا در واقع nut-driver-enumerator.sh) از یک مقدار پیش‌فرض توکار استفاده می‌کند که معمولاً /usr/local/ups/etc است.

اگر upsdrvsvcctl هنگام انجام عملیات مورد نظر با خطایی مواجه شود، یک کد خروج غیر صفر برمی‌گرداند. این امر همچنین در صورتی رخ می‌دهد که ورود یک درایور به پس‌زمینه بیشتر از دوره زمانی maxstartdelay طول بکشد.

هر پیامی که توسط برنامه upsdrvctl (که برای راه‌اندازی درایورهای NUT به عنوان بخشی از پیاده‌سازی نمونه‌های سرویس استفاده می‌شود) یا توسط خود درایورها صادر شود، توسط امکانات چارچوب مدیریت سرویس ثبت (لاگ) می‌شود و در ترمینال تعاملی شما که برای مدیریت درایور استفاده می‌شود ظاهر نخواهد شد.

از دستور upsdrvsvcctl list یا upsdrvsvcctl list NUT-device برای پیدا کردن نام نمونه سرویس برای درایور NUT (نام بخش) مورد نظر خود استفاده کنید. سپس گزارش‌های سرویس (محل ذخیره خروجی‌های برنامه پیاده‌سازی سرویس و همچنین پیام‌های چارچوب درباره این سرویس) را مطابق پیشنهاد زیر بررسی کنید:

Linux systemd

پیام‌ها معمولاً در ژورنال سرویس نگهداری می‌شوند، بنابراین:
journalctl -lu nut-driver@instance-name

توجه داشته باشید که پیکربندی محلی سیستم شما ممکن است تحت تأثیر ظرافت‌هایی مانند ارسال داده‌های ژورنال به یک سرور syslog استاندارد، و/یا داشتن یک حافظه موقت (کش) کوچک برای پیام‌های ژورنال ذخیره‌شده محلی (به طوری که ورودی‌های قدیمی‌تر ناپدید شوند) قرار گیرد. همچنین ممکن است یک رونوشت از ژورنال‌ها در سیستم فایل پایدار ذخیره شده یا اصلاً ذخیره نشده باشد.

Solaris SMF

به دنبال فایل /var/svc/log/system-power-nut-driver:instance-name.log بگردید.

Jim Klimov <jimklimov+nut@gmail.com>

upsdrvctl(8), nutupsdrv(8), upsd(8), nut-driver-enumerator(8), ups.conf(5)

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

06/21/2026 Network UPS Tools 2.8.5