pm-utils (не запускает скрипты из /etc/pm/power.d)
Модератор: /dev/random
pm-utils
скрипт с +х, корректно отрабатывает, если запустить вручную. При выходе из сна не выполняется. Пробывал уже ложить в /usr/lib/pm-utils/power.d - неа, не запускается. Кто сталкивался с подобной проблемой ?
Re: pm-utils
скрипт (это самописный скрипт для suspend/hibernate?) должен находиться в /etc/pm/sleep.d
кроме того, нужно ознакомиться с /usr/share/doc/pm-utils/HOWTO.hooks.bz2 -- как составлять и именовать такие скрипты
кроме того, нужно ознакомиться с /usr/share/doc/pm-utils/HOWTO.hooks.bz2 -- как составлять и именовать такие скрипты
Re: pm-utils
я видел, что в sleep.d имена скриптов генерируются с префиксом xx, где хх - диапазон чисел, оговоренные в мане.
Меня больше интересует power.d
вот пример скрипта из директории:
Код: Выделить всё
laptop power.d # pwd
/usr/lib/pm-utils/power.d
laptop power.d # cat disable_wol
#!/bin/sh
. "${PM_FUNCTIONS}"
command_exists ethtool || exit $NA
set_wol_status() {
for d in "/sys/class/net/"*; do
[ -e "$d/wireless" ] && continue
[ -h "$d/device/driver" ] || continue
printf "Setting Wake On Lan for %s to %s..." "${d##*/}" "$1"
case $1 in
disable) ethtool -s "${d##*/}" wol d>/dev/null 2>&1;;
enable) ethtool -s "${d##*/}" wol g>/dev/null 2>&1;;
esac
[ "$?" -eq 0 ] && echo Done. || echo Failed.
done
}
case $1 in
true) set_wol_status disable;;
false) set_wol_status enable;;
*) exit $NA;;
esac
exit 0
вот мой скрипт
Код: Выделить всё
#!/bin/sh
xxx() {
sudo -u user xscreensaver-command -lock &> /dev/null
sudo -u root pppoe-stop &> /dev/null;pppoe-start &> /dev/null
sudo -u root hdparm -B 254 /dev/sda &> /dev/null
sudo -u root hdparm -M 254 /dev/sda &> /dev/null
sudo -u root alsactl store &> /dev/null
sudo -u root echo 1 > /sys/module/snd_hda_intel/parameters/power_save
}
xxx
exit 0
Пробую такой вот скрипт выполнить. Что тут неправильно ?
Re: pm-utils
вообще мне не принципиально использовать именно pm-utils. Мне нужно что-то, что позволит выполнять скрипты после сна и до него.
Re: pm-utils
во-первых, скриптописание: в вашем скрипте функцию xxx кто-то должен вызвать. в приводимом примере такая функция вызывается явно (там, где case $1), а у вас - нет. но это - так, к слову, о правилах кодирования shell
во-вторых, в текущих реализациях дистрибутивов и не минималистских десктопах, скрипты вызывает upowerd, которому дает команду dm power manager посредством общения с dbus. соответственно, скрипт логически - тоже некорректен
в-последних: мне кажется, что все что есть в вашем скрипте - реализовано стандартно (разрыв сетевого соединения, блокировка экрана, сохранение установок звука и пр)
Re: pm-utils
перед засыпанием и после просыпания вроде бы всегда работают скрипты pm-utils, которые инициируются утилитами pm-suspend или pm-hibernate (которые опять же вызываются не напрямую, а через power-manager используемого dm, кажется, так: dm-power-manager -> dbus -> upowerd -> pm-suspend -> скрипты из .../sleep.d -> acpi command to suspend
Re: pm-utils
vr13 писал(а): ↑29.07.2012 19:00
перед засыпанием и после просыпания вроде бы всегда работают скрипты pm-utils, которые инициируются утилитами pm-suspend или pm-hibernate (которые опять же вызываются не напрямую, а через power-manager используемого dm, кажется, так: dm-power-manager -> dbus -> upowerd -> pm-suspend -> скрипты из .../sleep.d -> acpi command to suspend
у меня fuxbox. Мне надо напряму. Я пробывал вызывать и hibernate и pm-hibernate - не выполняется скрипт и все тут!
Re: pm-utils
Я не знаю, как работают pm_utils, но не могли бы вы сказать в чем разница между вызовом ф-ии в case:
Код: Выделить всё
case $1 in
true) set_wol_status disable;;
..
и ее вызовом без case, как в скрипте у vsdfn:
Код: Выделить всё
xxx
Те, и там, и там она вызывается явно прямо из скрипта, разве нет?
Re: pm-utils
sgfault писал(а): ↑29.07.2012 20:17Код: Выделить всё
xxx
Те, и там, и там она вызывается явно прямо из скрипта, разве нет?
прошу прощения (вашего и топикстартера) - не увидел или не рассмотрел хвост скрипта
топикстартеру еще раз: скрипту место в /etc/pm/sleep.d. в power.d находятся скрипты по управлению энергопотреблением, например от батареи или сети, выключить неиспользуемый wlan итд
Re: pm-utils
vr13 писал(а): ↑29.07.2012 22:31sgfault писал(а): ↑29.07.2012 20:17Код: Выделить всё
xxx
Те, и там, и там она вызывается явно прямо из скрипта, разве нет?
прошу прощения (вашего и топикстартера) - не увидел или не рассмотрел хвост скрипта
топикстартеру еще раз: скрипту место в /etc/pm/sleep.d. в power.d находятся скрипты по управлению энергопотреблением, например от батареи или сети, выключить неиспользуемый wlan итд
переместил и назвал скрипт 99harddrive. не помогло. При этом пробыл и в /etc/pm/sleep.d & /usr/lib/pm-utils/sleep.d
Re: pm-utils
ну пожалуйста, прочтите один раз внимательно /usr/share/doc/pm-utils/HOWTO.hooks.bz2 - иначе переписка по этой несущественной мелочи никогда не закончится
дополнительно, как у меня. имеется ноутбук с кривым bluetooth, который "не просыпается" после suspend. по этому поводу сделан самодельный hook, находится в /etc/pm/sleep.d/48mybluetooth:
Код: Выделить всё
#!/bin/sh
. "${PM_FUNCTIONS}"
case "$1" in
hibernate|suspend)
exit $NA
;;
thaw|resume)
echo on > /sys/bus/usb/devices/2-1/power/control
udevadm trigger --subsystem-match=bluetooth --action=add
sleep 1
exit 0
;;
*) exit $NA
;;
esac
хук помогает, а то что это работает, видно в логе:
Код: Выделить всё
$ grep 48mybluetooth /var/log/pm-suspend.log
Running hook /etc/pm/sleep.d/48mybluetooth suspend suspend:
/etc/pm/sleep.d/48mybluetooth suspend suspend: success.
Running hook /etc/pm/sleep.d/48mybluetooth resume suspend:
/etc/pm/sleep.d/48mybluetooth resume suspend: success.
Running hook /etc/pm/sleep.d/48mybluetooth suspend suspend:
/etc/pm/sleep.d/48mybluetooth suspend suspend: success.
Running hook /etc/pm/sleep.d/48mybluetooth resume suspend:
/etc/pm/sleep.d/48mybluetooth resume suspend: success.
Re: pm-utils
vr13 писал(а): ↑30.07.2012 06:42
ну пожалуйста, прочтите один раз внимательно /usr/share/doc/pm-utils/HOWTO.hooks.bz2 - иначе переписка по этой несущественной мелочи никогда не закончится
дополнительно, как у меня. имеется ноутбук с кривым bluetooth, который "не просыпается" после suspend. по этому поводу сделан самодельный hook, находится в /etc/pm/sleep.d/48mybluetooth:
Код: Выделить всё
#!/bin/sh . "${PM_FUNCTIONS}" case "$1" in hibernate|suspend) exit $NA ;; thaw|resume) echo on > /sys/bus/usb/devices/2-1/power/control udevadm trigger --subsystem-match=bluetooth --action=add sleep 1 exit 0 ;; *) exit $NA ;; esac
хук помогает, а то что это работает, видно в логе:
Код: Выделить всё
$ grep 48mybluetooth /var/log/pm-suspend.log Running hook /etc/pm/sleep.d/48mybluetooth suspend suspend: /etc/pm/sleep.d/48mybluetooth suspend suspend: success. Running hook /etc/pm/sleep.d/48mybluetooth resume suspend: /etc/pm/sleep.d/48mybluetooth resume suspend: success. Running hook /etc/pm/sleep.d/48mybluetooth suspend suspend: /etc/pm/sleep.d/48mybluetooth suspend suspend: success. Running hook /etc/pm/sleep.d/48mybluetooth resume suspend: /etc/pm/sleep.d/48mybluetooth resume suspend: success.
да, вродебы и у меня начало работать, только после того, как засунул скрипт в /usr/lib/pm-tils/sleep.d
Только вот прикол в том, что скрипт-то выполняется тогда, когда пк засыпает, а не тогда, когда он просыпается, а это мягко говоря меня не устраивает.