LINUX.ORG.RU
ФорумAdmin

правило udev'a не работает

 ,


0

1

доброй ночи, ЛОР!

а подскажите, пожалуйста, где косяк во втором листинге?
из коммандной строки это работает как нужно

sudo /bin/sh -c '/etc/acpi/headphones.sh none none `/usr/bin/cat \`/usr/bin/find /sys/devices/ -name i2c-ESSX8336:??\`/jack_status`'


а вот это плавило udev'а не хочет... причем один раз у меня получилось, но результат я не сохранил, а решил улучшить. «улучшил» %)
SUBSYSTEM=="i2c", ACTION=="add", DRIVERS=="es8316",RUN+="/usr/bin/bash -c '/etc/acpi/headphones.sh none none `/usr/bin/cat \`/usr/bin/find /sys/devices/ -name i2c-ESSX8336:??\`/jack_status`'"

причем один раз у меня получилось, но результат я не сохранил, а решил улучшить

Советую использовать etckeeper (и не забывать коммитить вручную в подобных ситуациях)

annulen ★★★★★
()
Ответ на: комментарий от annulen

etckeeper будет полезен любому, кто хотя бы изредка правит какие-либо системные конфиги руками.

обычно я вручную, «cp /etc/dangerous.rc /etc/dangerous.rc.old» %)

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от metawishmaster

Проблем может быть две - неправильное условие и неправильно написанная команда. Подели задачу, просто вызови какой нибудь гарантированно рабочий скрипт без параметров и станет ясно где твоя проблема, в условии или в команде.

no-dashi-v2 ★★★
()
Последнее исправление: no-dashi-v2 (всего исправлений: 2)
Ответ на: комментарий от no-dashi-v2

Проблем может быть две - неправильное условие и неправильно написанная команда.

или три - в каноникале могли напартачить

ну вот смотрите, куда уж проще:

SUBSYSTEM=="i2c", KERNEL=="i2c-ESSX8336:00", ACTION=="add", RUN+="/home/user/udev-helper.sh"

и
$ udevadm info -q all -a /sys/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-ESSX8336:00
  looking at device '/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-ESSX8336:00':
    KERNEL=="i2c-ESSX8336:00"
    SUBSYSTEM=="i2c"
    DRIVER=="es8316"
    ATTR{jack_status}=="plugged"
    ATTR{name}=="ESSX8336:00"
    ATTR{power/async}=="enabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 2)
Ответ на: комментарий от no-dashi-v2
sudo udevadm trigger --verbose --type=devices --subsystem-match=i2c --action=add


так работает, но при загрузке та же фигня...

// это, похоже убунтоидная проблема :-\

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от metawishmaster

но при загрузке та же фигня

ЕМНИП, в initramfs свои правила udev и они срабатывают первыми. Пересоздание initramfs копирует в него udev-правила, но там нет bash, /home и т.д.

Попробуйте создать правило для ADD вашего устройства, но не RUN, а, допустим LINK. Посмотреть, остаются от этого правила следы при загрузке, если нет, пересоздать initramfs (с распаковкой, чтобы проверить, что правило туда скопировалось).

mky ★★★★★
()
Ответ на: комментарий от mky

да я с помощью systemd (как бы я его не презирал %) сделал, чтоб в юните при загрузке исполнялся скрипт, который триггерит событие...

metawishmaster ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.