Nowe posty

xx Mulenie strony [Tylko informacja] (0)
2020-02-25, 16:36:43
xx Film Hakerzy dla wolności 2018 lektor (0)
2020-02-25, 08:47:38
xx Mageia instalacja (1)
2020-02-24, 14:43:32
xx Zlecę skrypt w bashu (0)
2020-02-19, 14:07:39
xx Nadawanie praw katalogom takich, jak nazwa usera (4)
2020-02-17, 14:15:18
xx Fedora na laptopie HP 15-bs152nw brak wifi (44)
2020-02-16, 12:17:18
xx Komputer do nauki linuxa (10)
2020-02-15, 07:03:28
xx Patronat serwisow internetowych. (1)
2020-02-13, 00:13:24
xx Xfce-terminal v 0.8.7.4 - jak ustawić wklejanie skopiowanego tekstu? (3)
2020-02-12, 18:59:24
xx HD ISO, jak odzyskać starsze pliki (6)
2020-02-12, 10:54:31

Autor Wątek: systemd problem z ExecStart  (Przeczytany 261 razy)

Offline mackeire

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 283
    • Zobacz profil
systemd problem z ExecStart
« dnia: 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)
« Ostatnia zmiana: 2020-01-16, 22:55:34 wysłana przez mackeire »

Offline pavbaranov

  • Users
  • Guru
  • *****
  • Wiadomości: 591
    • Zobacz profil
Odp: systemd problem z ExecStart
« Odpowiedź #1 dnia: 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?

Offline mackeire

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 283
    • Zobacz profil
Odp: systemd problem z ExecStart
« Odpowiedź #2 dnia: 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
```
« Ostatnia zmiana: 2020-01-17, 11:21:45 wysłana przez mackeire »

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2564
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
Odp: systemd problem z ExecStart
« Odpowiedź #3 dnia: 2020-01-17, 12:45:13 »
Poprawnie (tj bez skryptu pośredniego) powinno to być zrobione zgodnie z dokumentacją systemd.service, 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
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline mackeire

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 283
    • Zobacz profil
Odp: systemd problem z ExecStart
« Odpowiedź #4 dnia: 2020-01-17, 14:31:11 »
Dzięki. Tak zrobiłem, niech będzie prawidłowo.