Wie kann ich die cat multi-line-Inhalt in eine Datei die in einem systemd-unit-Datei?
Ich bin beim schreiben einer Datei auf der Festplatte als Teil des ExecStartPre
Kommando über eine systemd-unit-Datei.
Dies ist, was ich benutze:
[Unit]
Description=My service
[Service]
Restart=always
StartLimitInterval=0
ExecStartPre=/usr/bin/cat <<EOFDefaults > /tmp/test
option1=value1
option2=value2
EOFDefaults
ExecStart=/run/some/command
Da, das ist ein multi-line-Befehl, bekomme ich die folgende Fehlermeldung beim testen mit systemd-analyze verify myservice.service
.
So, ich habe versucht zu entkommen, die multi-Linien:
[Unit]
Description=My service
[Service]
Restart=always
StartLimitInterval=0
ExecStartPre=/usr/bin/cat <<EOFDefaults > /tmp/test \
option1=value1 \
option2=value2 \
EOFDefaults
ExecStart=/run/some/command
Beim testen der unit-Datei, bekomme ich folgende Fehlermeldung: Invalid escape sequences in command line:
Wie nutzt man die Katze zu schreiben multi-line-Inhalt in eine Datei, die als Teil einer systemd-unit-Datei-Befehl?
InformationsquelleAutor F21 | 2015-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht.
Siehe die Dokumentation Abschnitt auf Befehlszeilen:
Könnten Sie in der Lage sein, dies zu tun durch den Aufruf einer shell zuerst mit etwas wie:
Aber es wird wirklich unübersichtlich schnell.
Was ich tun würde, ist zu setzen Sie diese in eine separate shell-Skript und rufen, dass aus der service-definition. Im Allgemeinen ist es am besten, um die service-definition so klar wie möglich.
ExecStarPre
, aber es hat nicht funktioniert. Am Ende mit einem shell-Skript.Es braucht auch ein
\n
vor jeder nachfolgende\
ist, da sonst die Linien sind einfach verkettet in eine Zeile. Auch erwägen Sie, die überflüssige Leerzeichen vor dem trailing\
, die sonst am Ende in der here-doc und sich ein schwer zu findender Fehler, wenn es Probleme verursacht.InformationsquelleAutor Hiram