问题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
...

最佳答案

我能够以其他方法获取dmesg日志。使用AlarmManager在指定的间隔内运行服务,我从内核中获取日志,然后找到我从上次运行中复制的最后一行,然后追加新日志。而已!

10-01 04:06