¿Cómo redirigir el registro de printf hacia un archivo específico para un proceso de demonio en Linux?
Tengo un proceso demonio de ejemplo. Tengo un archivo de servicio que activará el archivo de lanzamiento del proceso principal. Cuando el sistema arranca, en función de este archivo, se creará el archivo /var/log/sample.out
y el archivo /var/log/sample.err
para el registro.
Necesito redirigir los registros de printf a este archivo sample.out
.
¿Hay alguna forma de hacer esto?
Agregué la siguiente declaración para hacer lo mismo, pero no muestra ningún registro en /var/log/sample.out
o /var/log/sample.err
.
${binary} > ${logs}.out 2> ${logs}.err
sample.c
#include<stdio.h>
int main()
{
printf("Demon starteed \n");
}
sample.service
[Unit]
Description="sample service"
[Service]
ExecStart=/usr/bin/sample.service.start
[Install]
WantedBy=multi-user.target
sample.service.start
service=sample
binary=/usr/bin/${service}
logs=/var/log/${service}
${binary} > ${logs}.out 2> ${logs}.err
davy.ai
Para redirigir el registro de
printf
al archivosample.out
, puedes modificar la declaración deprintf
en el archivosample.c
para que escriba directamente en el archivo usando las funcionesfopen
yfprintf
. Aquí tienes un ejemplo de código:Alternativamente, puedes modificar el archivo
sample.service.start
para redireccionar la salida del binariosample
usando el comandoexec
en lugar de simplemente ejecutar el binario. Aquí tienes una versión actualizada del archivo:Esto asegurará que cualquier salida del binario
sample
(incluyendo las declaracionesprintf
) se redirija a los respectivos archivos de registro especificados en la variablelogs
.</stdio.h>