Redireccionar
StandardOutput=file:/var/log/flume-ng/log1.log
StandardError=file:/var/log/flume-ng/log2.log
como se documenta aquí:https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=
Tenga en cuenta que de esta manera todo el contenido de los archivos de registro se sobrescribirá cada vez que se reinicie el servicio.
Anexar
Si desea mantener el registro de archivos entre los reinicios del servicio y simplemente agregarle nuevas líneas registradas:
# Works only in systemd v240 and newer!
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log
En el caso de systemd anterior a v240, puede usar:
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 que el programa shell se sustituirá por my_binary
programa después de configurar redirecciones sin bifurcar. Así que no habrá diferencia de ejecutar my_binary
directamente después de ExecStart=
.
ExecStart=/usr/bin/nohup …
Esto está mal. quitarlo Este servicio no se ejecuta en una sesión de inicio de sesión interactiva. No hay terminal de control, o líder de sesión, para enviarle una señal de colgado en primer lugar.
ExecStart=… &
Esto está mal. quitarlo Esto no es un script de shell. &
no tiene un significado especial similar a un shell y, en cualquier caso, sería la forma incorrecta de iniciar un servicio.
StandardOutput=/var/log/flume-ng/log1.log StandardError=/var/log/flume-ng/log2.log
Estos están mal. No utilice estos. systemd ya envía la salida estándar y el error de los procesos de servicio a su diario, sin ninguna configuración de este tipo en la unidad de servicio. Puedes verlo con
journalctl -e -u flume-ng.service
Para iniciar sesión en un archivo sin sobrescribir (se requiere system.d versión 240+):
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