GNU/Linux >> Linux Esercitazione >  >> Linux

Come reindirizzare l'output del servizio systemd su un file

Se hai una distribuzione più recente con un systemd più recente (systemd versione 236 o successiva), puoi impostare i valori di StandardOutput o StandardError a file:YOUR_ABSPATH_FILENAME .

Storia lunga:

Nelle versioni più recenti di systemd c'è un'opzione relativamente nuova (la richiesta github è del 2016 ish e il miglioramento è unito/chiuso 2017 ish) dove puoi impostare i valori di StandardOutput o StandardError a file:YOUR_ABSPATH_FILENAME . Il file:path opzione è documentata nel più recente systemd.exec pagina man.

Questa nuova funzionalità è relativamente nuova e quindi non è disponibile per le distribuzioni precedenti come centos-7 (o qualsiasi centos precedente).


Penso che ci sia un modo più elegante per risolvere il problema:inviare stdout/stderr a syslog con un identificatore e istruire il gestore syslog a suddividere l'output in base al nome del programma.

Utilizza le seguenti proprietà nel file dell'unità di servizio systemd:

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your program identifier> # without any quote

Quindi, supponendo che la tua distribuzione utilizzi rsyslog per gestire i syslog, crea un file in /etc/rsyslog.d/<new_file>.conf con il seguente contenuto:

if $programname == '<your program identifier>' then /path/to/log/file.log
& stop

Ora rendi il file di log scrivibile da syslog:

# ls -alth /var/log/syslog 
-rw-r----- 1 syslog adm 439K Mar  5 19:35 /var/log/syslog
# chown syslog:adm /path/to/log/file.log

Riavvia rsyslog (sudo systemctl restart rsyslog ) e goditelo! Il tuo programma stdout/stderr sarà ancora disponibile tramite journalctl (sudo journalctl -u <your program identifier> ) ma saranno disponibili anche nel tuo file preferito.

Fonte tramite archive.org


Linux
  1. Gestisci l'avvio usando systemd

  2. Come reindirizzare l'output su un file e Stdout in Linux

  3. Come creare un servizio Systemd in Linux

  4. Come reindirizzare l'output di un programma su un file zip?

  5. Reindirizzamento e uscita del tubo?

Come reindirizzare stderr a stdout in Bash

Come eseguire lo script della shell come servizio Systemd in Linux

Come reindirizzare l'output del comando della shell

Come reindirizzare l'output di system() su un file?

Come reindirizzare l'output del comando time su un file in Linux?

Come interrompere il servizio systemd