GNU/Linux >> Znalost Linux >  >> Linux

přesměrovat protokoly služeb systemd do souboru

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

Linux
  1. Spravujte spouštění pomocí systemd

  2. Najít soubor protokolu Firefoxu?

  3. Služba Linux OS „syslog“

  1. Jak použít Systemd k restartování služby, když je vypnutá?

  2. Log rotace stdout?

  3. Soubor služby existuje, ale nebyl nalezen systémem systemd

  1. Spustit službu Systemd po automatickém připojení, ale poté, co k ní přistoupíte?

  2. Jak přesměrovat protokoly konzoly telnet do souboru Linux

  3. Jak přesměrovat výstup služby systemd do souboru