GNU/Linux >> Linux Esercitazione >  >> Linux

reindirizzare i log del servizio systemd su file

Reindirizzamento

StandardOutput=file:/var/log/flume-ng/log1.log
StandardError=file:/var/log/flume-ng/log2.log

come documentato qui:https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=

Tieni presente che in questo modo l'intero contenuto dei file di log verrà sovrascritto ogni volta che il servizio viene riavviato.

Aggiungi

Se vuoi mantenere il registro dei file tra i riavvii del servizio e aggiungere semplicemente le nuove righe registrate:

# Works only in systemd v240 and newer!
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log

In caso di systemd precedente alla v240, puoi utilizzare:

ExecStart=/bin/sh -c 'exec /usr/bin/my_binary [arguments] >>/var/log/flume-ng/log1.log 2>>/var/log/flume-ng/log2.log'

exec significa che il programma shell verrà sostituito con my_binary programma dopo aver impostato i reindirizzamenti senza fork. Quindi non ci sarà alcuna differenza dall'esecuzione di my_binary subito dopo ExecStart= .


ExecStart=/usr/bin/nohup …

Questo è sbagliato. Rimuoverla. Questo servizio non è in esecuzione in una sessione di accesso interattiva. Non esiste un terminale di controllo, o un leader di sessione, che gli invii un segnale di riaggancio.

ExecStart=… &

Questo è sbagliato. Rimuoverla. Questo non è uno script di shell. & non ha un significato speciale simile alla shell, e in ogni caso sarebbe il modo sbagliato di avviare un servizio.

StandardOutput=/var/log/flume-ng/log1.log
StandardError=/var/log/flume-ng/log2.log

Questi sono sbagliati. Non usare questi. systemd invia già l'output standard e l'errore dei processi di servizio nel suo giornale, senza alcuna impostazione di questo tipo nell'unità di servizio. Puoi visualizzarlo con

journalctl -e -u flume-ng.service


Per accedere al file senza sovrascrivere (system.d versione 240+ richiesta):

StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log

o

StandardOutput=append:/var/log/flume-ng/log.log
StandardError=inherit

Linux
  1. Servizio del sistema operativo Linux "syslog"

  2. Come utilizzare Systemd per riavviare un servizio in caso di inattività?

  3. Come interrompere il servizio systemd

  4. Reindirizza la traccia al file

  5. creare un file di registro

Comandi Systemctl per gestire il servizio Systemd

Come eseguire lo script della shell come servizio Systemd in Linux

Configurazione di logrotate in Linux

Rotazione del file di registro

Registri di sistema

Il file di servizio esiste ma non viene trovato da systemd