Forum Linux.pl

System => Konfiguracja => Wątek zaczęty przez: mackeire w 2020-01-16, 22:51:19

Tytuł: systemd problem z ExecStart
Wiadomość wysłana przez: mackeire w 2020-01-16, 22:51:19
Chcę uruchomić takie polecenie w systemd service

TOUCH_DEVICE_BLACKLIST="Synaptics T Pad V 01.31 Touchpad" /home/dell/.ppm/evdev-rce

W konsoli działa , natomiast systemd nie chce uruchomić usługi

plik ppm.service

[Unit]
Description=ppm

[Service]
Type=simple
ExecStart=TOUCH_DEVICE_BLACKLIST="Synaptics T Pad V 01.31 Touchpad" /home/dell/.ppm/evdev-rce

[Install]
WantedBy=multi-user.target

 manual systemd mi niewiele mówi.


$ sudo systemctl status ppm.service
[sudo] hasło użytkownika dell:
● ppm.service - ppm
   Loaded: error (Reason: Exec format error)
   Active: inactive (dead)
Tytuł: Odp: systemd problem z ExecStart
Wiadomość wysłana przez: pavbaranov w 2020-01-17, 09:20:23
To co chcesz wprowadzić jako polecenie do wykonania wygląda mi na jakąś zmienną środowiskową. Czy to musi być usługa systemd? Nie może być "normalnie", jako zmienna?
Tytuł: Odp: systemd problem z ExecStart
Wiadomość wysłana przez: mackeire w 2020-01-17, 11:17:01
Chcę uruchomić przy starcie systemu programik evdev-rce wg instrukcji poniżej :

# Required interval in ms for a touch event to be considered a long press
# default = 1000ms
LONG_CLICK_INTERVAL=1000
# Allowed margin of error (in px) for a long press event
# i.e. the finger is considered still if its movement is within this range
# Note: the px here is not physical pixels on the screen. It's the physical
# pixels of the touch devices, which may have a different resolution.
# default = 100px
LONG_CLICK_FUZZ=100
# Uncomment to set a blacklist of devices that `evdev-rce` will not
# listen on for touch events. The names can be retrived by using `xinput`
# or simply by reading the output of `evdev-rce`
# (it will print out the names of all touch devices when starting,
#  e.g. "Found touch screen at <some_path>: <device_name>)
TOUCH_DEVICE_BLACKLIST="Synaptics T Pad V 01.31 Touchpad"
# Uncomment to set a whitelist of devices that `evdev-rce` will ONLY
# listen on. This overrides the blacklist - when whitelist is present,
# any device not in this list will be ignored.
#TOUCH_DEVICE_WHITELIST="device1 name|device2 name|..."
```

So you can run the program like

```
LONG_CLICK_INTERVAL=500 LONG_CLICK_FUZZ=50 evdev-rce

W związku z tym ,że program potrzebuje dostępu do /dev/input/event1 system woła o hasło.
Więc przez systemd będzie chyba łatwiej , można by też pewnie zrobić to regułami w udev .

Tak czy siak znalazłem obejście problemu.
systemd odpala zwykły skrypt nie wymagający podawania żadnych zmiennych który zawiera ścieżkę do właściwego skryptu ;)

sudo systemctl status ppm.service
[sudo] hasło użytkownika dell:
● ppm.service - ppm
   Loaded: loaded (/etc/systemd/system/ppm.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-01-17 10:52:26 CET; 20min ago
 Main PID: 731 (blacklist_touchpad.s)
    Tasks: 2 (limit: 4531)
   CGroup: /system.slice/ppm.service
           ├─731 /bin/sh /home/dell/.ppm/blacklist_touchpad.sh
           └─741 /home/dell/.ppm/evdev-rce
```
Tytuł: Odp: systemd problem z ExecStart
Wiadomość wysłana przez: Paweł Kraszewski w 2020-01-17, 12:45:13
Poprawnie (tj bez skryptu pośredniego) powinno to być zrobione zgodnie z dokumentacją systemd.service (https://www.freedesktop.org/software/systemd/man/systemd.service.html), przy pomocy pola Environment:

[Unit]
Description=ppm

[Service]
Type=simple
Environment=TOUCH_DEVICE_BLACKLIST='Synaptics T Pad V 01.31 Touchpad'
ExecStart=/home/dell/.ppm/evdev-rce

[Install]
WantedBy=multi-user.target
Tytuł: Odp: systemd problem z ExecStart
Wiadomość wysłana przez: mackeire w 2020-01-17, 14:31:11
Dzięki. Tak zrobiłem, niech będzie prawidłowo.