问题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在指定的间隔内运行服务,我从内核中获取日志,然后找到我从上次运行中复制的最后一行,然后追加新日志。而已!