systemd service mit Leerzeichen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
olli1209
Beiträge: 79
Registriert: 04.08.2004 23:26:08
Wohnort: Dortmund

systemd service mit Leerzeichen

Beitrag von olli1209 » 11.11.2014 14:41:54

Hi,

habe eine kleines Problem wo ich nach viel rumprobieren nicht weiterkomme. :?
Und zwar habe ich einen systemd user service mit einem ExecStart, das leider
ein paar Leerzeichen im Pfad hat.

Code: Alles auswählen

[Unit]
Description=Planetary Annihilation Dedicated Server

[Service]
ExecStart=/home/server/.local/Uber Entertainment/Planetary Annihilation/stable/server --headless --game-mode config --allow-lan
Restart=always

[Install]
WantedBy=default.target
Habe schon jegliche Kombination von "" und '' ausprobiert und bekomme entweder immer die Meldung:
systemd[801]: pa.service: main process exited, code=exited, status=203/EXEC
oder
systemd[801]: [/home/server/.config/systemd/user/pa.service:7] Executable path is not absolute, ignoring: ...

Was ich probiert habe:
"/home/server/.local/Uber Entertainment/Planetary Annihilation/stable/server --headless --game-mode config --allow-lan"
"/home/server/.local/Uber Entertainment/Planetary Annihilation/stable/server" --headless --game-mode config --allow-lan
"/home/server/.local/Uber Entertainment/Planetary Annihilation/stable/server" "--headless" "--game-mode config" "--allow-lan"
"/home/server/.local/Uber Entertainment/Planetary Annihilation/stable/server" "--headless --game-mode config --allow-lan"
...usw.

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: systemd service mit Leerzeichen

Beitrag von hikaru » 11.11.2014 14:49:58

Geht das?:

Code: Alles auswählen

ExecStart=/home/server/.local/Uber\ Entertainment/Planetary\ Annihilation/stable/server --headless --game-mode config --allow-lan

olli1209
Beiträge: 79
Registriert: 04.08.2004 23:26:08
Wohnort: Dortmund

Re: systemd service mit Leerzeichen

Beitrag von olli1209 » 11.11.2014 16:07:14

Nein, leider nicht. War aber auch einer meiner Versuche.
Das gibt die Fehlermeldung: (code=exited, status=203/EXEC)
Der gleiche Befehl einfach in die Shell kopiert läuft.

Laut [1] ist "\" auch nur erlaubt um Zeilenumbrüche zu mergen, wenn ichs richtig verstehe. Mann solle entweder double quotes "" oder single quotes '' verwenden.

[1]: http://0pointer.de/public/systemd-man/s ... ExecStart=

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: systemd service mit Leerzeichen

Beitrag von hikaru » 11.11.2014 16:13:28

Als Würgaround fiele mir noch ein Symlink ohne Leerzeichen oder ein Wrapperscript ein.

olli1209
Beiträge: 79
Registriert: 04.08.2004 23:26:08
Wohnort: Dortmund

Re: systemd service mit Leerzeichen

Beitrag von olli1209 » 11.11.2014 16:22:38

Habe es im Moment auch mit einem Wrapperscript laufen. Die Idee war das Script loszuwerden
und alles in der service Datei zu haben. Nur stellte sich das schwieriger herraus als gedacht. :|

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: systemd service mit Leerzeichen

Beitrag von Cae » 11.11.2014 16:56:41

Vielleicht tut es mit einem whitespace-freien Leerzeichen a la \x20.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

olli1209
Beiträge: 79
Registriert: 04.08.2004 23:26:08
Wohnort: Dortmund

Re: systemd service mit Leerzeichen

Beitrag von olli1209 » 11.11.2014 18:18:38

Cae hat geschrieben:Vielleicht tut es mit einem whitespace-freien Leerzeichen a la \x20.
Wie würde ich das machen?

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: systemd service mit Leerzeichen

Beitrag von Cae » 11.11.2014 18:30:10

olli1209 hat geschrieben:
Cae hat geschrieben:Vielleicht tut es mit einem whitespace-freien Leerzeichen a la \x20.
Wie würde ich das machen?
Nunja, ich dachte, das waere in der Antwort schon etwas offensichtlich: Ein Leerzeichen hat hexadezimal den Wert 0x20, welches sich in printf-Syntax als \x20 schreiben laesst:

Code: Alles auswählen

$ printf 'foo bar\n' | cat -A
foo bar$
$ printf 'foo\x20bar\n' | cat -A
foo bar$
$ 
Folglich koennte

Code: Alles auswählen

ExecStart=/home/server/.local/Uber\x20Entertainment/Planetary\x20Annihilation/stable/server --headless --game-mode config --allow-lan
funktionieren. Aber das Ganze ist ein Bug in systemd (einer der vielen...).

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

olli1209
Beiträge: 79
Registriert: 04.08.2004 23:26:08
Wohnort: Dortmund

Re: systemd service mit Leerzeichen

Beitrag von olli1209 » 11.11.2014 20:03:28

Das geht wirklich 8O

Hatte mir schon fast gedacht, dass es ein Bug in systemd ist. Vielleicht sollte ich den mal irgendwo melden...

Edit: Bugreport erstellt: https://bugs.freedesktop.org/show_bug.cgi?id=86171

Antworten