pm-utils (не запускает скрипты из /etc/pm/power.d)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Ответить
vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

pm-utils

Сообщение vsdfn »

скрипт с +х, корректно отрабатывает, если запустить вручную. При выходе из сна не выполняется. Пробывал уже ложить в /usr/lib/pm-utils/power.d - неа, не запускается. Кто сталкивался с подобной проблемой ?
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: pm-utils

Сообщение vr13 »

скрипт (это самописный скрипт для suspend/hibernate?) должен находиться в /etc/pm/sleep.d

кроме того, нужно ознакомиться с /usr/share/doc/pm-utils/HOWTO.hooks.bz2 -- как составлять и именовать такие скрипты
Спасибо сказали:
vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: pm-utils

Сообщение vsdfn »

vr13 писал(а):
29.07.2012 15:04
скрипт (это самописный скрипт для suspend/hibernate?) должен находиться в /etc/pm/sleep.d

кроме того, нужно ознакомиться с /usr/share/doc/pm-utils/HOWTO.hooks.bz2 -- как составлять и именовать такие скрипты

я видел, что в 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

Пробую такой вот скрипт выполнить. Что тут неправильно ?
Спасибо сказали:
vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: pm-utils

Сообщение vsdfn »

вообще мне не принципиально использовать именно pm-utils. Мне нужно что-то, что позволит выполнять скрипты после сна и до него.
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: pm-utils

Сообщение vr13 »

vsdfn писал(а):
29.07.2012 18:14
Пробую такой вот скрипт выполнить. Что тут неправильно ?

во-первых, скриптописание: в вашем скрипте функцию xxx кто-то должен вызвать. в приводимом примере такая функция вызывается явно (там, где case $1), а у вас - нет. но это - так, к слову, о правилах кодирования shell

во-вторых, в текущих реализациях дистрибутивов и не минималистских десктопах, скрипты вызывает upowerd, которому дает команду dm power manager посредством общения с dbus. соответственно, скрипт логически - тоже некорректен

в-последних: мне кажется, что все что есть в вашем скрипте - реализовано стандартно (разрыв сетевого соединения, блокировка экрана, сохранение установок звука и пр)

Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: pm-utils

Сообщение vr13 »

vsdfn писал(а):
29.07.2012 18:45
вообще мне не принципиально использовать именно pm-utils. Мне нужно что-то, что позволит выполнять скрипты после сна и до него.

перед засыпанием и после просыпания вроде бы всегда работают скрипты pm-utils, которые инициируются утилитами pm-suspend или pm-hibernate (которые опять же вызываются не напрямую, а через power-manager используемого dm, кажется, так: dm-power-manager -> dbus -> upowerd -> pm-suspend -> скрипты из .../sleep.d -> acpi command to suspend
Спасибо сказали:
vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: pm-utils

Сообщение vsdfn »

vr13 писал(а):
29.07.2012 19:00
vsdfn писал(а):
29.07.2012 18:45
вообще мне не принципиально использовать именно pm-utils. Мне нужно что-то, что позволит выполнять скрипты после сна и до него.

перед засыпанием и после просыпания вроде бы всегда работают скрипты 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 - не выполняется скрипт и все тут!
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -
Контактная информация:

Re: pm-utils

Сообщение sgfault »

vr13 писал(а):
29.07.2012 18:53
vsdfn писал(а):
29.07.2012 18:14
Пробую такой вот скрипт выполнить. Что тут неправильно ?

во-первых, скриптописание: в вашем скрипте функцию xxx кто-то должен вызвать. в приводимом примере такая функция вызывается явно (там, где case $1), а у вас - нет. но это - так, к слову, о правилах кодирования shell

Я не знаю, как работают pm_utils, но не могли бы вы сказать в чем разница между вызовом ф-ии в case:

Код: Выделить всё

case $1 in
    true) set_wol_status disable;;
..

и ее вызовом без case, как в скрипте у vsdfn:

Те, и там, и там она вызывается явно прямо из скрипта, разве нет?
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: pm-utils

Сообщение vr13 »

sgfault писал(а):
29.07.2012 20:17

Те, и там, и там она вызывается явно прямо из скрипта, разве нет?

прошу прощения (вашего и топикстартера) - не увидел или не рассмотрел хвост скрипта

топикстартеру еще раз: скрипту место в /etc/pm/sleep.d. в power.d находятся скрипты по управлению энергопотреблением, например от батареи или сети, выключить неиспользуемый wlan итд
Спасибо сказали:
vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: pm-utils

Сообщение vsdfn »

vr13 писал(а):
29.07.2012 22:31
sgfault писал(а):
29.07.2012 20:17

Те, и там, и там она вызывается явно прямо из скрипта, разве нет?

прошу прощения (вашего и топикстартера) - не увидел или не рассмотрел хвост скрипта

топикстартеру еще раз: скрипту место в /etc/pm/sleep.d. в power.d находятся скрипты по управлению энергопотреблением, например от батареи или сети, выключить неиспользуемый wlan итд

переместил и назвал скрипт 99harddrive. не помогло. При этом пробыл и в /etc/pm/sleep.d & /usr/lib/pm-utils/sleep.d
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: pm-utils

Сообщение vr13 »

vsdfn писал(а):
29.07.2012 23:20
переместил и назвал скрипт 99harddrive. не помогло. При этом пробыл и в /etc/pm/sleep.d & /usr/lib/pm-utils/sleep.d

ну пожалуйста, прочтите один раз внимательно /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.
Спасибо сказали:
vsdfn
Сообщения: 147
ОС: Windows,Linux,BSD

Re: pm-utils

Сообщение vsdfn »

vr13 писал(а):
30.07.2012 06:42
vsdfn писал(а):
29.07.2012 23:20
переместил и назвал скрипт 99harddrive. не помогло. При этом пробыл и в /etc/pm/sleep.d & /usr/lib/pm-utils/sleep.d

ну пожалуйста, прочтите один раз внимательно /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
Только вот прикол в том, что скрипт-то выполняется тогда, когда пк засыпает, а не тогда, когда он просыпается, а это мягко говоря меня не устраивает.
Спасибо сказали:
Ответить