|
| |||
|
|
pm-utils и софт для UPS (apcupsd, NUT) - SOLVED Возвращаясь к напечатанному. Если коротко: система SL6.3 (RHEL/CentOS6.3 по сути). Нужно, чтобы упс-монитор по истечении таймера/критическом разряде батарей не отрубал машину, а клал в гибернацию. Вроде все просто: для apcupsd предлагается создать кастом-скрипт под названием doshutdown, в котором прописан pm-hibernate. На деле же, такое впечатление, что apccontrol, управляемый apcupsd, начисто игнорирует doshutdown в том случае, если это _именно_скрипт_, лежащий в /etc/apcupsd (то есть тупо отправляет машину в шатдаун). Если же вместо скрипта завести симлинк на тот же самый скрипт, лежащий, скажем, в /usr/local/bin, то apccontrol его-таки обрабатывает, но безрезультатно. Сказать почему - сложно, в syslog лишь записи Капитана Очевидность, мол "Reached run time limit on batteries, initiating system shutdown!". Больше ничего не происходит. Ладно, выкидываем apcupsd, ставим NUT (2.6.4). После настройки драйверов, юзеров (для upsmon там заводится юзер nut) и разруления прав на доступ к упс'ке, приступаем к кастомизации upsmon.conf. Казалось бы, для достижения желаемого результата, достаточно заменить SHUTDOWNCMD "/sbin/shutdown -h +0"на SHUTDOWNCMD "/usr/sbin/pm-hibernate" Однако при тесте shutdown-сценария (upsmon -c fsd), в syslog пишется: Nov 15 18:15:15 HOSTNAME upsmon[6792]: Signal 10: User requested FSD Nov 15 18:15:15 HOSTNAME upsd[6788]: Client nut@::1 set FSD on UPS [apc] Nov 15 18:15:15 HOSTNAME upsmon[6792]: Executing automatic power-fail shutdown Nov 15 18:15:15 HOSTNAME wall[6795]: wall: user nut broadcasted 2 lines (43 chars) Nov 15 18:15:15 HOSTNAME upsmon[6792]: Auto logout and shutdown proceeding Nov 15 18:15:15 HOSTNAME wall[6798]: wall: user nut broadcasted 1 lines (37 chars) Nov 15 18:15:20 HOSTNAME upsmon[6791]: parent: Unable to call shutdown command: /usr/sbin/pm-hibernate то есть так просто это не делается. Или делается не так. Или что-то с полиси и правами доступа. От отчаяния попробовал завести для юзера nut запись в sudoers и прописывал pm-hibernate через sudo -- с тем же результатом. Гугление ничего не дало, во всех примерах рассматривается именно шатдаун, лишь в доках по NUT упоминается Suspend-to-disk как очень хороший способ, лучше чем шатдаун, очень крабе и рекомендуэ -- без какой-либо конкретики. Конфиги NUT: /etc/ups/ups.conf: [apc] driver = usbhid-ups port = auto /etc/ups/nut.conf: MODE=standalone /etc/ups/upsd.conf: LISTEN 127.0.0.1 3493 LISTEN ::1 3493 /etc/ups/upsd.users: [nut]
password = somepassword
upsmon master
actions = SET
instcmds = ALL/etc/ups/upsmon.conf: RUN_AS_USER nut MONITOR apc@localhost 1 nut defupspasswd master MINSUPPLIES 1 #SHUTDOWNCMD "/sbin/shutdown -h +0" SHUTDOWNCMD "/usr/sbin/pm-hibernate" POLLFREQ 5 POLLFREQALERT 5 HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower NOCOMMWARNTIME 300 FINALDELAY 5 Куда чинить? Спасибо. UPDATE: SOLVED! В общем, пришлось сменить машину (как это пришлось? я сам сменил!), на новой - под SL6 не завелась риалтековская сетевушка. После тыканий по разным репам, SL был выброшен в пользу Бубунты-10.04. Там apcupsd ведет себя как и ожидается, то есть молча выполняет все, что прописано в doshutdown (причем, именно в скрипте, а не симлинке на скрипт с гибернейтом), и даже вырубает упску (по --killpower) при хальте. Немного пришлось покурочить doshutdown и apccontrol (например, принудительно придушить демона перед гибернейтом -- иначе после пробуждения он первым делом порывался затушить машинку). Теперь при достижении 50% заряда apcupsd убивается, выводит пердупреждение, чтобы после пробуждения его запустили вручную, передается apcupsd --killpower, машинка уходит в гибернейт, после чего упска засыпает. Все! |
||||||||||||||