2

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

Я разместил сервис в /etc/systemd/system/startup_actions.service

[Unit]  
Description=Startup actions

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

[Install]
WantedBy=multi-user.target

Чтобы запустить это я делаю

sudo systemctl start startup_actions.service 

Модуль отключает клавиши pgup и down с помощью xmodmap и работает самостоятельно:

#!/bin/bash
xmodmap -e 'keycode 112 = NoSymbol'
xmodmap -e 'keycode 117 = NoSymbol'

Сценарий размещен в

/usr/local/bin

Это вывод статуса systemctl

startup_actions.service - Startup actions
Loaded: loaded (/etc/systemd/system/startup_actions.service; enabled; vendor preset: enable
Active: failed (Result: exit-code) since Sat 2017-11-04 14:15:18 GMT; 1h 21min ago
Process: 2360 ExecStart=/usr/local/bin/disable_pgupdw.sh (code=exited, status=1/FAILURE)
Main PID: 2360 (code=exited, status=1/FAILURE)

Когда я пытаюсь запустить его, он говорит:

Job for startup_actions.service failed because the control process exited with error code.
See "systemctl  status startup_actions.service" and "journalctl  -xe" for details.

2 ответа2

1

Следующий блок работает, хотя это не оптимальное решение

[Unit]  
Description=Startup actions

[Service]
Type=simple
User=USERNAME
Environment=DISPLAY=:0 
ExecStart=/usr/local/bin/disable_pgupdw.sh

[Install]
WantedBy=multi-user.target

На самом деле нужно добавить сон 10 в начале скрипта, что не очень приятно

#!/bin/bash
sleep 10
xmodmap -e 'keycode 112 = NoSymbol'
xmodmap -e 'keycode 117 = NoSymbol'

Как указал Игнасио, xmodmap требует доступа к X-серверу. Комбинация

Type=simple
User=USERNAME
Environment=DISPLAY=:0

а также

sleep 10

в сценарии, кажется, достичь требования.

0

Этот же модуль работает для меня, когда я помещаю его в ~user/.config/systemd/user/ (затем systemctl --user daemon-reload ) и запускаю его с помощью systemctl --user start startup_actions.service .
Таким образом, переменные среды устанавливаются правильно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .