Помогите разобраться с acpid

Пытаюсь настроить поведение acpid при включении/выключении адаптера от сети. Добавил вот тестовый вывод в файл handler.sh

ac_adapter)
        case "$2" in
            AC|ACAD|ADP0)
                case "$4" in
                    00000000)
                        echo "We on battery" > /home/likan/powerlog
            logger 'AC unpluged'
                        ;;
                    00000001)
            echo "We on power" > /home/likan/powerlog
                        logger 'AC pluged'
                        ;;
                esac
                ;;
            *)
                logger "ACPI action undefined: $2"
                ;;
        esac
В итоге сколько бы я не втыкал-вытыкал питание никаких файлов не создается. Почему такое происходит?
Привожу пример баловства, точнее проводил ликбез внуку (твоя ошибка — acpi_listen имеет 4 параметра, которые ты все должен передать - 1-ый стоит автоматом)
ac_adapter)
case "$2" in
ACPI0003:00)
case "$3" in
00000080)
case "$4" in
00000000)
echo 5 > /sys/class/backlight/acpi_video0/brightness
;;
00000001)
echo 15 > /sys/class/backlight/acpi_video0/brightness
;;
esac
;;
esac

;;
esac
;;
PS.....пишу ночью, не проверял, могут быть ошибки - проверяй сам, да и параметры вставляй свои
Ошибки не исчезают с опытом - они просто умнеют
По подробнее, что за case $3? Вот пример из arch wiki
/etc/acpi/handler.sh
[...]

 ac_adapter)
     case "$2" in
         AC*)
             case "$4" in
                 00000000)
                     echo "conservative" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                     echo -n $minspeed >$setspeed
                     #/etc/laptop-mode/laptop-mode start
                 ;;
                 00000001)
                     echo "performance" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                     echo -n $maxspeed >$setspeed
                     #/etc/laptop-mode/laptop-mode stop
                 ;;
             esac
         ;;
         *) logger "ACPI action undefined: $2" ;;
     esac
 ;;

[...]
Нет там никакого case $3
тож интересно, ибо пробовал, и ничего не получилось
likanblk
По подробнее, что за case $3?
Подробнее......коротко не ответишь, погугли команду case — конструкция условного перехода, если совсем простым языком, то если при проверке совпадение найдено, выполняется соответствующее действие.
В данном случае у тебя имеется 4 параметра, которые выдает acpi_listen (написано хорошо в Wiki — acpid - The output of acpi_listen is sent to /etc/acpi/handler.sh as $1, $2 , $3 & $4 parameters).
При совершении события (например, извлечение адаптера) будет выдано 4 параметра и по этим параметрам будет выполнена проверка - и если по всем 4 параметрам будет совпадение, то выполнится действие, которое ты укажешь, если не совпадет, то ничего не выполняется.
Почему 4 параметра — ну так устроен вывод acpi_listen — да забыл упомянуть, каждому $1, $2 , $3, $4 соответствует свой параметр (смотри Wiki, на которую дал ссылку)
Может сумбурно и не точно, все говорят, что я плохо объясняю — может кто меня и поправит.
Ошибки не исчезают с опытом - они просто умнеют
не ну вы описали то правильно с этим не поспоришь одно только но:
это не имеет отношение к acpid вообще, это "принцип передача переменных в shell и в linux и в unix" как то так... сорри

p.s. я вообще считаю acpid устаревшей и ненужной (чисто моё мнение...)
Ошибки в тексте-неповторимый стиль автора©
ind.indeviral, ок, как тогда реализовать уменьшение яркости при работе от аккума?
$ cat /etc/udev/rules.d/70-ctrl_pow.rules
SUBSYSTEM=="power_supply", ATTR{online}=="*", RUN+="/home/user/script/power/ctrl_pow.sh"

$ cat ~/script/power/ctrl_pow.sh
#!/bin/sh
export DISPLAY=:0.0
sleep 1
BAT=($`cat /sys/class/power_supply/BAT0/uevent | sed "s/POWER.*=//"`)
if [ ${BAT[1]} == "Discharging" ];
        then
                echo N > /sys/module/snd_hda_intel/parameters/power_save_controller
                echo 1 > /sys/module/snd_hda_intel/parameters/power_save
                echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
                echo 3000 > /proc/sys/vm/dirty_expire_centisecs
                echo 0 > /proc/sys/kernel/nmi_watchdog
                echo 5 > /proc/sys/vm/laptop_mode
                echo 90 > /proc/sys/vm/dirty_ratio
                echo 1 > /proc/sys/vm/dirty_background_ratio
                echo -n 244 > /sys/class/backlight/intel_backlight/brightness
                echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                echo powersave > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
                /bin/notify "#Warning:" "power loss" -u critical &
        else
                echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller
                echo 0 > /sys/module/snd_hda_intel/parameters/power_save
                echo 60000 > /proc/sys/vm/dirty_writeback_centisecs
                echo 60000 > /proc/sys/vm/dirty_expire_centisecs
                echo 1 > /proc/sys/kernel/nmi_watchdog
                echo 0 > /proc/sys/vm/laptop_mode
                echo 10 > /proc/sys/vm/dirty_ratio
                echo 5 > /proc/sys/vm/dirty_background_ratio
                echo -n 976 > /sys/class/backlight/intel_backlight/brightness
                echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
                /bin/notify "#Attention:" "power recover" &
fi;

у меня как то так... но это в целом для яркости достаточно и двух строчек...
Ошибки в тексте-неповторимый стиль автора©
ind.indeviral
это не имеет отношение к acpid вообще
Это имеет отношение, в части получения event-ов и дальнейших actions -
acpid2 is a flexible and extensible daemon for delivering ACPI events. When an event occurs, executes programs to handle the event. These events are triggered by certain actions, such as:
- Pressing special keys, including the Power/Sleep/Suspend button
- Closing a notebook lid
- (Un)Plugging an AC power adapter from a notebook
- (Un)Plugging phone jack etc.

Вы полностью перешли на udev, это хорошо, но лично я его избегаю, да и демон acpid у меня деактивирован, не использую — но в качестве тренировки, это неплохо для усвоения. Пусть изучают. Аккум тоже использую в редких случаях, ну а регулировка яркости всегда работает с мультимедийными клавишами. И не нужно мне никаких скриптов.
Ошибки не исчезают с опытом - они просто умнеют
vasek
/etc/acpi/handler.sh
совсем никаких?))

на счёт переменных:
$0, $1-9 и [email protected] и $*

$ cat 1.sh
echo  $0
echo  $1
echo  $2
echo  [email protected]

$ sh 1.sh привет пока досвидание
1.sh
привет
пока
привет пока досвидание

Вот так оно работает, я думаю вы в курсе. И к acpid оно никаким боком не относится.
Ошибки в тексте-неповторимый стиль автора©
 
Зарегистрироваться или войдите чтобы оставить сообщение.