Как перенаправить данные dmesg с помощью Runtime.exec? - PullRequest
1 голос
/ 11 ноября 2011

Задача 1: Я хочу перенаправить журнал ядра в другой файл, используя мое приложение. Как правильно выполнить это? Код выглядит примерно так:

Runtime.getRuntime().exec("dmesg > /data/kernel_log.txt"); 

Задача 2: Я хочу очистить журнал ядра, используя мое приложение. Как исправить приведенный ниже код;

Runtime.getRuntime().exec("dmesg -c"); 

Примечание 1: Моя цель - перевести весь журнал ядра (dmesg) с START на LATEST. Так как dmesg имеет ограничение размера буфера, и я не хочу перестраивать ядро просто чтобы изменить размер буфера.

Примечание 2: это очень связано с; android: как запустить команду оболочки из кода

Примечание 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
...

1 Ответ

0 голосов
/ 15 ноября 2011

Мне удалось получить журнал dmesg другим способом.Используя AlarmManager для запуска службы в указанный интервал, я извлекаю журнал из ядра, затем нахожу последнюю строку, скопированную из предыдущего запуска, и добавляю новые журналы.Вот и все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...