问题1: 我想使用我的应用程序将内核日志重定向到其他文件。 如何正确执行?代码如下所示:
Runtime.getRuntime().exec("dmesg > /data/kernel_log.txt");
问题2: 我想使用我的应用程序清除内核日志。如何更正以下代码;
Runtime.getRuntime().exec("dmesg -c");
注1: 我的目标是从START到LATEST获取内核的所有日志(dmesg)。 由于dmesg具有缓冲区大小限制,我不想重建内核 只是为了调整缓冲区的大小。
注2:这与此非常相关; android : how to run a shell command from within code
注意3:目前我正在使用具有ENG模式构建的设备,这意味着这是根本的,我是否正确?
Logcat错误消息:
11-11 20:18:47.910: E/DmesgGetterService(2885): java.io.IOException: Error running exec(). Command: [dmesg > /data/kernel_log.txt] Working Directory: null Environment: null
...
11-11 20:19:07.920: E/DmesgGetterService(2885): Caused by: java.io.IOException: No such file or directory
...
答案 0 :(得分:0)
我能够以不同的方法获取dmesg日志。使用AlarmManager在指定的时间间隔内运行服务我从内核中获取日志,然后找到我从上一次运行中复制的最后一行,然后附加新日志。那就是它!