GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo redirigir la salida del servicio systemd a un archivo

Si tiene una distribución más nueva con un systemd más nuevo (systemd versión 236 o posterior), puede establecer los valores de StandardOutput o StandardError a file:YOUR_ABSPATH_FILENAME .

Larga historia:

En versiones más recientes de systemd hay una opción relativamente nueva (la solicitud de github es de 2016 ish y la mejora se fusionó / ​​cerró 2017 ish) donde puede establecer los valores de StandardOutput o StandardError a file:YOUR_ABSPATH_FILENAME . El file:path La opción está documentada en el systemd.exec más reciente. página man.

Esta nueva característica es relativamente nueva y, por lo tanto, no está disponible para distribuciones más antiguas como centos-7 (o cualquier centos anterior).


Creo que hay una forma más elegante de resolver el problema:envíe el stdout/stderr a syslog con un identificador e indique a su administrador de syslog que divida su salida por nombre de programa.

Use las siguientes propiedades en su archivo de unidad de servicio systemd:

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

Luego, asumiendo que su distribución usa rsyslog para administrar syslogs, cree un archivo en /etc/rsyslog.d/<new_file>.conf con el siguiente contenido:

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

Ahora haga que el archivo de registro sea escribible por 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

Reinicie rsyslog (sudo systemctl restart rsyslog ) ¡y disfrutar! Su programa stdout/stderr seguirá estando disponible a través de journalctl (sudo journalctl -u <your program identifier> ) pero también estarán disponibles en el archivo de su elección.

Fuente a través de archive.org


Linux
  1. Cómo redirigir la salida a un archivo y salida estándar en Linux

  2. ¿Cómo redirigir la salida de un programa a un archivo zip?

  3. Cómo redirigir la salida a un archivo y stdout

  4. ¿Cómo usar Systemd para reiniciar un servicio cuando está inactivo?

  5. Cómo redirigir la salida del programa como su entrada

Administrar el inicio usando systemd

Cómo guardar la salida del comando en un archivo en Linux

Cómo redirigir stderr a stdout en Bash

Cómo ejecutar Shell Script como servicio Systemd en Linux

Cómo redirigir la salida del comando de shell

redirigir los registros del servicio systemd al archivo