Я пытаюсь изменить некоторые настройки с помощью udev, когда я включаю и ac приемный родитель, но наклон, кажется, заставляет его работать. Я выполняю человечность 15.04, и это - то, что я имею:
sudo systemctl status udev ● systemd-udevd.service - udev Kernel Device Manager Loaded: loaded (/lib/systemd/system/systemd-udevd.service; static; vendor preset: enabled) Active: active (running) since lör 2015-05-02 20:28:42 CEST; 2h 3min ago Docs: man:systemd-udevd.service(8) man:udev(7) Main PID: 293 (systemd-udevd) CGroup: /system.slice/systemd-udevd.service └─293 /lib/systemd/systemd-udevd
agni% ls -l /etc/udev/rules.d/50* -rw-r--r-- 1 root root 122 maj 2 20:25 /etc/udev/rules.d/50-kappa.rules
Это - то, что содержит правило, я попробовал несколько разных вещей, но это - то, что в настоящее время находится в нем, и от того, что я понимаю, что оно должно работать
cat /etc/udev/rules.d/50-kappa.rules ACTION=="change", SUBSYSTEM=="power_supply", RUN+="/usr/local/bin/power-change.sh true"
и сценарий, который должен работать
ls -l /usr/local/bin/power-change.sh -rwxr-xr-x 1 root root 255 maj 2 17:24 /usr/local/bin/power-change.sh
cat /usr/local/bin/power-change.sh set_ac() { echo -e "$(date)\nAC CONNECTED" > /home/kempe/test2.txt } set_bat() { echo -e "$(date)\nAC DISCONNECTED" > /home/kempe/test2.txt } case $1 in true) set_ac ;; false) set_bat ;; *) exit 1 ;; esac exit 0
И это - то, что я сделал, чтобы попытаться заставить его работать с любой удачей
sudo udevadm control --reload #no effect sudo udevadm trigger # no effect sudo reboot # no effect :)
udevadm monitor --property monitor will print the received events for: UDEV - the event which udev sends out after rule processing KERNEL - the kernel uevent KERNEL[816.963544] change /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP1 (power_supply) ACTION=change DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP1 POWER_SUPPLY_NAME=ADP1 POWER_SUPPLY_ONLINE=0 SEQNUM=2847 SUBSYSTEM=power_supply UDEV [816.966150] change /devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP1 (power_supply) ACTION=change DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP1 POWER_SUPPLY_NAME=ADP1 POWER_SUPPLY_ONLINE=0 SEQNUM=2847 SUBSYSTEM=power_supply USEC_INITIALIZED=6963257 KERNEL[817.171654] change /devices/virtual/backlight/mba6x_backlight (backlight) ACTION=change DEVPATH=/devices/virtual/backlight/mba6x_backlight SEQNUM=2848 SOURCE=sysfs SUBSYSTEM=backlight UDEV [817.174385] change /devices/virtual/backlight/mba6x_backlight (backlight) ACTION=change DEVPATH=/devices/virtual/backlight/mba6x_backlight SEQNUM=2848 SOURCE=sysfs SUBSYSTEM=backlight SYSTEMD_WANTS=systemd-backlight@backlight:mba6x_backlight.service TAGS=:systemd: USEC_INITIALIZED=8174
Если я запускаю скрипт непосредственно от терминала, он хорошо работает, таким образом, нет никакой проблемы там
/usr/local/bin/power-change.sh true agni% cat /home/kempe/test2.txt -e lör 2 maj 2015 23:06:52 CEST AC CONNECTED
Какие-либо предложения?
hashbang отсутствует в сценарии:
udev не запускает эти программы ни на каком активном терминале, и он не выполняет их под контекстом оболочки. Обязательно удостоверьтесь, что Ваша программа отмечена исполняемый файл, если это - сценарий оболочки, гарантируют, что это запускается с соответствующей хижины (например, #!/bin/sh), и не ожидайте, что любой стандартный вывод появится на Вашем терминале.
источник: Запись udev правила
Иначе, назовите его с /bin/sh
ACTION=="change", SUBSYSTEM=="power_supply", RUN+="bin/sh /usr/local/bin/power-change.sh true"
Я неправильно искал что, продолжая в правиле в течение приблизительно двух часов. То, что урок для меня также.
BTW, можно отладить и протестировать установку udev.
sudo udevadm test /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP1