Вариант 1 - проверьте ПУТЬ
Первый шаг — посмотреть, не заключается ли проблема в том, где расположены команды:
$ тип - эхо
эхо - это встроенная оболочка
эхо - это /bin/echo
$ введите -a wmctrl
wmctrl — это /usr/bin/wmctrl
эхо
встроена в оболочку, а также находится в папке /бин
каталог, который является самым популярным каталогом для программ.
wmctrl
команда находится в /USR/бен
каталог, который может не быть частью вашего systemd ДОРОЖКА
.
Так похоже на этот вопрос:
Решение заключалось в том, чтобы добавить строку в службу systemd:
[Оказание услуг]
Environment=PATH=/home/someUser/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Другой вариант — жестко закодировать каталог для команды при ее вызове: /usr/bin/wmctrl
.
Вариант 2 - WantedBy=многопользовательская.цель
ПРИМЕЧАНИЕ: Это универсальный вариант для тех, Запускать и не относится к Неисправность как делает ОП.
Если путь не был проблемой, следующим шагом будет проверка WantedBy
вариант:
Ответ там объясняет:
Обратите внимание, что Wants или WantedBy говорит только о том, что система должна запускать одну службу всякий раз, когда запускается другая служба или цель, но ничего не указывает на порядок запуска/выключения. Если вам нужно, чтобы служба B уже работала при запуске службы A, вам нужно добавить Before=A.service в файл B.service, чтобы явно указать зависимость порядка запуска.
Учтите тот факт, что графический интерфейс может даже не работать, когда ваш скрипт запущен. Так что нет окон для wmctrl -l
сообщить.
Если это проблема После
(во время запуска), а не WantedBy
является вероятным решением.
Вариант 3 - Использование /бен/правда
Из комментариев в этом вопросе и ответе:
Заменять:
RemainAfterExit=true
С:
RemainAfterExit=/bin/true
Примечание: истинный
это встроенная оболочка и команда:
$ тип - истина
правда это встроенная оболочка
правда это /бен/правда