LINUX.ORG.RU

[udev] udev не видит правила

 


0

1

Здравствуйте.

На днях перешел со слаки64 на арч64 и возникла следующая проблема. Из старой системы перетащил настройки udev`а для автоматического хмонтирования флешек и прочих переносных девайсов, но в новой системе он не заработал.

Демон в памяти висит (пробовал перезапускать):

  165 ?        Ss     0:01 /lib/udev/udevd --daemon

Правило лежит в /etc/udev/rules.d с соответствующими правами доступа:

-rw-r--r-- 1 root root 424 Feb 14 03:44 /etc/udev/rules.d/99-automount.rules

Содержание упростил по самое немогу:

ACTION==«add», RUN+=«/bin/echo ADD > /tmp/udev-add.log»

После изменений делаю: udevadm control --reload

Пробовал перемещать в /lib/udev/rules.d и ставить максимальный приоритет.

При этом устройства видны udev`у и событие «add» проходит в мониторе.

Версия udev 180.


Debian Wheezy. Эффект тот же. Файл не создаётся, хотя симуляция говорит обратное:

# udevadm test --action=add /bus/usb/devices/usb5/5-4
run_command: calling: test
adm_test: version 175
This program is for debugging only, it does not run any program,
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

parse_file: reading '/lib/udev/rules.d/30-temp.rules' as rules file   <-------
parse_file: reading '/lib/udev/rules.d/39-libmtp.rules' as rules file
...
parse_file: reading '/etc/udev/rules.d/z60_hdparm.rules' as rules file
udev_rules_new: rules use 239040 bytes tokens (19920 * 12 bytes), 34971 bytes buffer
udev_rules_new: temporary index used 62720 bytes (3136 * 20 bytes)
udev_device_new_from_syspath: device 0x163f2d0 has devpath '/bus/usb/devices/usb5/5-4'
udev_device_new_from_syspath: device 0x1651460 has devpath '/bus/usb/devices/usb5/5-4'
udev_device_read_db: device 0x1651460 filled with db file data
udev_rules_apply_to_event: RUN '/bin/echo ADD > /tmp/udev-add.log' /lib/udev/rules.d/30-temp.rules:1   <--------------------
udev_rules_apply_to_event: PROGRAM 'mtp-probe /sys/bus/usb/devices/usb5/5-4 5 2' /lib/udev/rules.d/39-libmtp.rules:735
udev_event_spawn: starting 'mtp-probe /sys/bus/usb/devices/usb5/5-4 5 2'
...
gag ★★★★★
()
Ответ на: комментарий от gag

Ну тут то прямым текстом говорится, что команда не будет выполнена:

This program is for debugging only, it does not run any program, specified by a RUN key.

=)

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

Да-да. Я о том, что она найдена, пропарсена и должна была бы выполниться в рабочем режиме.

gag ★★★★★
()

Вот так работает:

cat > /tmp/test.sh
#!/bin/sh
/bin/echo ADD > /tmp/udev-add.log

ACTION=="add", SUBSYSTEM=="usb", RUN+="/tmp/test.sh"
gag ★★★★★
()
Ответ на: комментарий от gag

И в правду работает. Большое спасибо, буду дальше рыть.

А сейчас перерыв на обед. =)

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

А вот так можно и в production (см. 55-dm.rule):

ACTION=="add", SUBSYSTEM=="usb", RUN+="/bin/sh -c 'echo ADD > /tmp/udev-add.log'"

Кстати, ни в одном правиле нет перенаправления stdout.

gag ★★★★★
()

Как всегда ошибка была в днк: у одной из директорий выше вызываемого скрипта были выставлены права 750.

В упрощенном правиле, видимо, ошибка была в использовании перенаправления вывода.

Еще раз спасибо gag.

magras
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.