Сбой службы systemd (203 / EXEC) - PullRequest
0 голосов
/ 10 января 2019

У меня есть специальная служба systemd (созданная с использованием этого руководства для изменения разрешения экрана до настраиваемого значения при запуске.

У меня проблемы с запуском службы (код = 203 / EXEC).

Для начала я безуспешно перепробовал все решения следующих существующих тем:

Исправление сбоя службы systemd 203 / EXEC (такого файла или каталога нет)

Сбой службы Systemd при запуске

Невозможно запустить Gunicorn в качестве службы в systemd 203 / EXEC

Мой файл .service такой:

[Unit]
Description=Set resolution to 1920x1080

[Service]
Type=oneshot
ExecStart=/usr/bin/fixres.sh

[Install]
WantedBy=multi-user.target

Мой сценарий выглядит следующим образом:

#!/bin/bash
xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
xrandr --addmode Virtual1 "1920x1080_60.00"
xrandr --output Virtual1 --mode "1920x1080_60.00"

В выходных данных journalctl указывается, что служба «Сбой при выполнении шага EXEC /usr/bin/fixres.sh: разрешение отклонено». Тем не менее, у меня нет проблем с запуском сценария самостоятельно, просто bash /usr/bin/fixres.sh.

Другие примечания: это в CentOS7, запущенном в VirtualBox

Может кто-нибудь найти ошибку, которую я сделал, или, возможно, дать мне несколько вариантов устранения неполадок?

Заранее спасибо.

Edit:

Я сделал разумную вещь и на самом деле погуглил свое сообщение об ошибке из journalctl, получив эту ссылку . После изменения разрешений моего скрипта на выполнение я получаю новую ошибку в journalctl, утверждающую, что скрипт не может открыть дисплей.

В настоящее время есть комментарий к вопросу, предлагающий именно это.

Если я запускаю xhost, я получаю следующий вывод:

access control enabled, only authorized clients can connect
SI:localuser:root
SI:localuser:<username>

Я незнаком с этим аспектом, но похоже, что root имеет доступ к xhost.

Другой предложенный вариант - экспорт дисплея. Я не уверен, что это могло бы сделать. Я не пытаюсь получить доступ к дисплею из удаленной системы. Или это то, как Linux интерпретирует это?

Обновление:

Итак, добавление Environment=DISPLAY=:0 в файл модуля позволяет мне запускать службу из командной строки. Однако, это все еще терпит неудачу при загрузке. У меня такое чувство, что мне нужно ждать начала другой службы.

Я попытался добавить After=gdm.service, но это также не удается. Есть ли другие службы, которые мне, возможно, придется подождать?

...