У меня есть клавиатура с подсветкой, которая не запускается по умолчанию, когда я использую ubuntu, поэтому мне приходится вручную запускать скрипт каждый раз после запуска, чтобы включить подсветку.
Я хотел автоматизируйте это, чтобы сценарий запускался автоматически, и поэтому я создал системный блок systemd, чтобы позаботиться об этом.
Проблема в том, что сервисный модуль не работает даже при запуске с терминала
systemctl daemon-reload
systemctl start keyboard-lights.service
Я создал файл .service внутри /etc/systemd/system/
[Unit]
Description=Startup script for keyboard backlights
[Service]
ExecStart=/usr/local/bin/keyboard-lights.sh
[Install]
WantedBy=multi-user.target
Скрипт для включения подсветки клавиатуры находится в /usr/local/bin/keyboard-lights.sh
У меня есть выполнил исполняемый файл сценария с помощью
chmod 744 /usr/local/bin/keyboard-lights.sh
Что мне не хватает из моего файла .service, из-за которого сценарий не запускается?
Oct 23 22:09:13 user keyboard-lights.sh[3479]: running keyboard-lights script
Oct 23 22:09:13 user keyboard-lights.sh[3479]: xset: unable to open display ""
Oct 23 22:09:13 user systemd[1]: keyboard-lights.service: Main process exited, code=exite
Oct 23 22:09:13 user systemd[1]: keyboard-lights.service: Unit entered failed state.
Oct 23 22:09:13 user systemd[1]: keyboard-lights.service: Failed with result 'exit-code'.
-rw-rw-r-- 1 root root ? 199 Oct 23 22:00 /etc/systemd/system/keyboard-lights.service
это скрипт keyboard-lights.sh, и он работает, когда я запускаю его на своем
#!/bin/bash
echo "running keyboard-lights script"
if [ -f /tmp/keyboard_light ]; then
xset -led 3 && rm /tmp/keyboard_light
else
xset led 3 && touch /tmp/keyboard_light
fi
Я изменил заголовок сообщения, чтобы отразить то, что я считаю причиной проблемы.
Я попытался выполнить поиск в Интернете и не нашел решения для xset: unable to open display ""
Я попытался добавить export DISPLAY=:0 к моему сценарию оболочки, но это не устранило проблему.
I изменил мой служебный файл, чтобы просто запустить команду для включения подсветки клавиатуры, изменив строку ExecStart на
ExecStart=/bin/sh -c "xset led 3"
, но ошибка xset: unable to open display "" по-прежнему сохраняется.
Почему что команда будет работать в моем терминале в порядке (включение подсветки клавиатуры), но не запускается без ошибок в моем служебном файле при запуске?