将应用程序输出重定向到日志文件时遇到问题

将应用程序输出重定向到日志文件时遇到问题

我有一个运行 Linux 的嵌入式 ARM 设备,它在启动时启动一个应用程序。该应用程序中有一堆"printf(...)"我需要查看的语句。我处理此问题的正常方法是在嵌入式设备启动后通过 SSH(从主机 PC)终止正在运行的应用程序,然后通过 SSH 终端重新启动它,以便我可以在主机 PC 上的控制台。这样做的问题是应用程序在终止并重新启动后表现不佳。

我试图做的是编辑启动脚本以使用.. 来表示"(nohup ./myAppName 2>&1 | logger) &"和查看,但是没有记录任何内容。/var/log/syslogtail -f

我已经验证确实"(nohup echo "test123" 2>&1 | logger) &"可以正确记录到系统日志中。

哪里可能出了问题?该应用程序是否有可能未打印到 stdout/stderr?当我重新启动应用程序时,它确实会正确打印到控制台,但正如我所说,当我这样做时,超出此范围的其他内容都会被破坏。

答案1

当 stdout 不是 tty 时,某些程序会更简洁。您可以使用 screen 模拟 tty:

screen -L -d -m ./myAppName

它将输出记录为类似./screenlog.0.您需要当前目录的写权限!

否则,程序也可能仅在您的引导环境中默默地失败。

我会使用strace并避免调试logger

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

相关内容