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