您可能会认为该问题是重复的,但请阅读到最后。
我有一个在嵌入式 Linux 上运行的应用程序,我想从该应用程序中捕获所有日志。我尝试将 with 文件描述符作为 1 用于 stdout,2 用于 stderr。我能够捕获 stderr 日志。我想用 printf 语句捕获日志。该应用程序已经构建,因此我无法更改它。它是嵌入式 Linux,因此没有脚本 实用程序。 我的应用程序有 printf 日志。我只想使用 shell 命令捕获它们(如果有的话)。 我尝试了以下命令
./application 2>&1 | tee file.txt
./application >cmd.log 2>&1
./application | tee log.txt
通过这些命令,我能够捕获错误消息,但不能捕获 printf 消息
请帮忙。
最佳答案
你的前两个命令行实际上应该捕获发送到 stdin
和 的所有内容(通过
(最后一个命令行遗漏了后者)。printf
、puts
等) stderr
如果仍有消息打印到控制台或 tty,应用程序要么重定向(例如使用 dup2
)stderr
和/或 stdout
到其他设备,或者它根本不将其输出发送到这两个文件(例如,已知 glibc 在某些错误情况下直接写入控制台设备)。
如果不知道输出实际发送到哪里,就不可能捕捉到它。 strace
应用程序可用于找出这些字符串被发送到的位置。
关于linux - 嵌入式 Linux -> 将应用程序日志保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48038796/