У меня есть следующий сценарий, сохранил его/lib/systemd/system-sleep/, каталог, для погони за каждым пробуждением от приостанавливают:
#!/bin/bash
if [ "$1" == "post" ]; then
sleep 5
cni=$(ip link | grep "state UP" | grep --only-matching --perl-regexp '(?<=:).*(?=:)' | tr --delete ' ')
#cni=connected(UP) network interface(s)
if [ -z "$cni" ] && [ $(nmcli radio wifi) == "disabled" ]; then
#export DISPLAY=:0
#su -c - my_user nmcli radio wifi on
nmcli radio wifi on
fi
fi
Я протестировал его, вошел в систему как обычный пользователь, затем в терминале su - корень и работал, это с переключателем "отправляет" его работы как ожидалось и когда нет никакого подключенного сетевого адаптера, и Wi-Fi снижается, это включает WI-FI. Однако это не работает, когда я на самом деле приостанавливаю и бужу свой ноутбук. Я читал, что, возможно, должен определить переменную ДИСПЛЕЯ и выполнить ее как обычный пользователь, но тем не менее она не помогла. Какая-либо идея, что я пропускаю здесь?
РЕДАКТИРОВАНИЕ - добавленная хижина в начале сценария, забыл писать это здесь, но это - мой в сценарии
4.10.0-21-универсальное ядро Ubuntu 17.04
Вы используете bash
функции, но позволяете systemd
запустить свой скрипт с /bin/sh
. Поместите #!/bin/bash
вначале или перепишите свой сценарий, чтобы только использовать sh
функции.