Přesměrování
StandardOutput=file:/var/log/flume-ng/log1.log
StandardError=file:/var/log/flume-ng/log2.log
jak je zdokumentováno zde:https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=
Všimněte si, že tímto způsobem bude celý obsah souborů protokolu přepsán při každém restartu služby.
Připojit
Pokud chcete udržovat protokol souborů mezi restartováním služby a pouze k němu připojit nové protokolované řádky:
# Works only in systemd v240 and newer!
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log
V případě systemd staršího než v240 můžete použít:
ExecStart=/bin/sh -c 'exec /usr/bin/my_binary [arguments] >>/var/log/flume-ng/log1.log 2>>/var/log/flume-ng/log2.log'
exec
znamená, že program Shell bude nahrazen my_binary
program po nastavení přesměrování bez rozvětvení. Nebude tedy žádný rozdíl od spuštění my_binary
přímo za ExecStart=
.
ExecStart=/usr/bin/nohup …
To je špatně. Odstranit to. Tato služba není spuštěna v relaci interaktivního přihlášení. Neexistuje žádný řídící terminál nebo vedoucí relace, který by mu v první řadě poslal signál zavěšení.
ExecStart=… &
To je špatně. Odstranit to. Toto není shell skript. &
nemá žádný zvláštní význam podobný shellu a v každém případě by to byl špatný způsob spuštění služby.
StandardOutput=/var/log/flume-ng/log1.log StandardError=/var/log/flume-ng/log2.log
To jsou špatně. Nepoužívejte tyto. systemd již odesílá standardní výstup a chyba servisního procesu (procesů) do jeho žurnálu, bez jakéhokoli takového nastavení v servisní jednotce. Můžete jej zobrazit pomocí
journalctl -e -u flume-ng.service
Pro přihlášení do souboru bez přepisování (vyžadován system.d verze 240+):
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log
nebo
StandardOutput=append:/var/log/flume-ng/log.log
StandardError=inherit