Tener problemas para redirigir la salida de la aplicación al archivo de registro

Tener problemas para redirigir la salida de la aplicación al archivo de registro

Tengo un dispositivo ARM integrado que ejecuta Linux y que inicia una aplicación al arrancar. Esta aplicación tiene un montón de "printf(...)"declaraciones que necesito ver. La forma normal en que he estado abordando esto es cerrar la aplicación en ejecución a través de SSH (desde una PC host) en el dispositivo integrado después de que se inicia, y luego volver a iniciarla a través del terminal SSH para poder ver las declaraciones impresas en el consola en el PC anfitrión. El problema con esto es que la aplicación no se comporta bien después de cerrarla y reiniciarla.

Lo que he intentado hacer es editar el script de inicio para decir "(nohup ./myAppName 2>&1 | logger) &"y ver /var/log/syslogcon tail -f... sin embargo, no se registra nada.

He verificado que "(nohup echo "test123" 2>&1 | logger) &"efectivamente se registra correctamente en el syslog.

¿Dónde podrían estar yendo mal las cosas? ¿Es posible que la aplicación no imprima en stdout/stderr? Cuando reinicio la aplicación, se imprime correctamente en la consola, pero como dije, otras cosas más allá del alcance de esto no funcionan cuando lo hago.

Respuesta1

Algunos programas son menos detallados cuando la salida estándar no es un tty. Puedes emular un tty usando la pantalla:

screen -L -d -m ./myAppName

que registra la salida en algo como ./screenlog.0. ¡Necesita permiso de escritura en el directorio actual!

De lo contrario, también es posible que el programa simplemente falle silenciosamente sólo dentro de su entorno de arranque.

Lo depuraría usando stracey evitando logger:

strace -f -o /tmp/myApp.strace nohup ./myAppName >/tmp/myApp.log 2>&1

información relacionada