O serviço Systemd não está funcionando

2

Alguém poderia descobrir por que essa unidade systemd não inicia?

Eu coloquei o serviço em /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

Para executá-lo eu faço

sudo systemctl start startup_actions.service 

O symply da unidade desativa as teclas pgup e down com o xmodmap e funciona sozinho:

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

O script é colocado em

/usr/local/bin

Esta é a saída do estado do sistema, startup_actions

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)

Quando tento iniciar, diz:

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.
    
por Reyx_0 04.11.2017 / 15:44

2 respostas

1

A seguinte unidade funciona, embora não seja a solução ideal

[Unit]  
Description=Startup actions

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

[Install]
WantedBy=multi-user.target

Na verdade, é necessário adicionar um sleep 10 no início do script, o que não é muito bom

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

Como apontado por Ignacio, o xmodmap requer acesso ao servidor X. A combinação

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

e

sleep 10

no script parece alcançar o requisito.

    
por 04.11.2017 / 18:33
0

A mesma unidade funciona para mim quando eu a coloco em ~user/.config/systemd/user/ (então systemctl --user daemon-reload ) e a inicio usando systemctl --user start startup_actions.service .
Desta forma, as variáveis de ambiente são definidas corretamente.

    
por 25.11.2017 / 02:11

Tags