Крон не запускает скрипт управления подсветкой клавиатуры

Я пытаюсь записать сценарий, который выключает мою подсветку клавиатуры после 30 секунд неактивности для сохранения питания. Это должно базироваться полномочия работать правильно. В текущей попытке я реализую его как задание Крона. Сценарий следующие:

#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# requires installation of xprintidle

# if user idle for greater than or equal to 30s and
# keyboard backlight is on, turn backlight off
echo 'Start script' >> /home/lair001/cronout.txt
CheckIdle() {
    if [ 30000 -le $(xprintidle) ] && [ $(cat /sys/devices/platform/thinkpad_acpi/leds/tpacpi::kbd_backlight/brightness) -ne 0 ]
    then
    echo '0' > /sys/devices/platform/thinkpad_acpi/leds/tpacpi::kbd_backlight/brightness
    echo 'Attempted to turn off backlight' >> /home/lair001/cronout.txt
fi
}

# since cron jobs can only be scheduled up to
# once a minute, run CheckIdle twice with a 31s
# delay between iterations

CheckIdle
echo 'Ran first check' >> /home/lair001/cronout.txt
sleep 31s
CheckIdle
echo 'Ran second check' >> /home/lair001/cronout.txt

Файл крона для корня следующие:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * /usr/bin/thinpad_kb_bl_dr_idl.sh & >/dev/null 2>&1

От журналов крона появляется, как будто команда работает:

Aug  4 23:25:01 Robotron CRON[5310]: (root) CMD (/usr/bin/thinpad_kb_bl_dr_idl.sh & >/dev/null 2>&1)
Aug  4 23:26:01 Robotron CRON[5396]: (root) CMD (/usr/bin/thinpad_kb_bl_dr_idl.sh & >/dev/null 2>&1)
Aug  4 23:27:01 Robotron CRON[5399]: (root) CMD (/usr/bin/thinpad_kb_bl_dr_idl.sh & >/dev/null 2>&1)
Aug  4 23:28:01 Robotron CRON[5452]: (root) CMD (/usr/bin/thinpad_kb_bl_dr_idl.sh & >/dev/null 2>&1)
Aug  4 23:29:01 Robotron CRON[5459]: (root) CMD (/usr/bin/thinpad_kb_bl_dr_idl.sh & >/dev/null 2>&1)

Однако cronout.txt остается пустым. Сценарий работает правильно как sudo или корень от терминала. Первоначально, я пытался реализовать этот сценарий как персистентный фоновый процесс, но это продолжало останавливаться:

# !/bin/sh

# requires installation of xprintidle

while true
do
    # if user idle for greater than or equal to 30s and
    # keyboard backlight is on, turn backlight off
    if [ 30000 -le $(xprintidle) ] && [ $(cat /sys/devices/platform/thinkpad_acpi/leds/tpacpi::kbd_backlight/brightness) -ne 0 ]
        then
        echo '0' > /sys/devices/platform/thinkpad_acpi/leds/tpacpi::kbd_backlight/brightness
    # else if user pressed a key within the past 30s and
    # keyboard backlight is off, put backlight on dim
    elif [ 30000 -gt $(xprintidle) ] && [ $(cat /sys/devices/platform/thinkpad_acpi/leds/tpacpi::kbd_backlight/brightness) -eq 0 ]
        then
        echo '1' > /sys/devices/platform/thinkpad_acpi/leds/tpacpi::kbd_backlight/brightness
    fi
    # Check every 2 seconds
    # Faster check cycles means that the backlight turns on
    # quicker after keystroke at the expense of
    # greater CPU and power consumption
    sleep 2s
done

Все еще хочу реализовать способ включить подсветку клавиатуры с пользовательским действием после того, как я нашел путь мимо проблем полномочий и умирающих бесконечных циклов.

1
задан 5 August 2016 в 06:46

0 ответов

Другие вопросы по тегам:

Похожие вопросы: